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: 
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.
```
-(void)writeData:(NSData *)data :(NSInteger *)len; 

```

Is a valid objective-c method (and it is different from `writeData:length:` from compiler point of view), but naming all method parameters makes code much more readable and easier to understand, so your 1st example is preferable