Question: Consider the below prototype, which is a common one,

```
-(void)writeData:(NSData *)data length:(NSInteger *)len;

```

I am aware what each part of this method means. My query is, whether the "length", the name for the second argument is optional?
Whether the compiler will compile the following:

```
-(void)writeData:(NSData *)data :(NSInteger *)len;

```

\**Edit:*\*Thanks for all your responses :)

Answer: 
It will, but it is considered bad style - basically you are violating the Objective-C naming conventions.

The first method is named `writeData:length:`, the second one `writeData::`
Firstly, `(NSInteger *)` is not fine, because `NSInteger` is primitive type. So you must use only `NSInteger`.

Also, your second `syntax` is true for compiler, but wrong for human.