Is there a reason for that?
Depends on what version of Lazarus is being used. (You've to understand that code completion is not based on FPC sources, but a stand-alone CodeTools library).
The trunk version of Lazarus finds NSArray declaration (the actual file) without problem.
But there're two other issues.
1) CodeTools seems to be confused by redeclared NSObject at (packages/cocoaint/src/AnonClassDefinitionQuartzcore.pas). That prevents Lazarus from showing "alloc" and "init" for NSArray. (Since it cannot identify that they're inherited from NSObject declared at objcbase.pas).
@Jonas, would it be reasonable to remove NSObject declaration from there?!
For Lazarus version I can easily clean this up by:
1. Removing NSObject declaration from AnonClassDefinitionQuartzcore.pas completely.
2. in Lazarus Tools->Rescan FPC Source Directory.
After that code completion on NSArray shows all NSObject methods.
2) It might be that CodeTools are missing the feature of "id" type to have all declared objc methods available. At least it looks so. If you'd use type casting however, it would work:
NSMutableArray(NSMustableArray.alloc).| <-- completion works