秦皇岛市城乡建设网站,个人网站设计成首页,好创意的设计网站,学生没钱怎么开网店总目录 iOS开发笔记目录 从一无所知到入门 文章目录源码中 NSArray 的构造方法与命名规律自定义类的构造方法命名截图代码输出源码中 NSArray 的构造方法与命名规律 interface NSArrayObjectType (NSArrayCreation) (instancetype)array;(instancetype)arrayWithObject…总目录 iOS开发笔记目录 从一无所知到入门 文章目录源码中 NSArray 的构造方法与命名规律自定义类的构造方法命名截图代码输出源码中 NSArray 的构造方法与命名规律 interface NSArrayObjectType (NSArrayCreation) (instancetype)array;(instancetype)arrayWithObject:(ObjectType)anObject;(instancetype)arrayWithObjects:(const ObjectType _Nonnull [_Nonnull])objects count:(NSUInteger)cnt;(instancetype)arrayWithObjects:(ObjectType)firstObj, ... NS_REQUIRES_NIL_TERMINATION;(instancetype)arrayWithArray:(NSArrayObjectType *)array;- (instancetype)initWithObjects:(ObjectType)firstObj, ... NS_REQUIRES_NIL_TERMINATION;
- (instancetype)initWithArray:(NSArrayObjectType *)array;
- (instancetype)initWithArray:(NSArrayObjectType *)array copyItems:(BOOL)flag;/* Reads array stored in NSPropertyList format from the specified url. */
- (nullable NSArrayObjectType *)initWithContentsOfURL:(NSURL *)url error:(NSError **)error API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0));
/* Reads array stored in NSPropertyList format from the specified url. */(nullable NSArrayObjectType *)arrayWithContentsOfURL:(NSURL *)url error:(NSError **)error API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0)) NS_SWIFT_UNAVAILABLE(Use initializer instead);end可以看出一个类型中用于返回一个该类型对象的方法(不止是构造方法)的命名规律为以下(其中Xxx表示具体的类名)
方法的返回值可以从 (Xxx *) 变成 (instancetype) 其中instancetype在该类中表示该类的实例类型。加nullable表示方法的返回值可为空。以开头的类方法的命名xxx xxxWithArg1: arg2: arg3...以-开头的对象方法的命名initWithArg1: arg2: arg3...
自定义类的构造方法命名
按照上述规律自定义类代码如下
截图
Person类定义 main方法调用部分
代码
//
// main.m
// 构造方法
//
// Created by wuyujin1997 on 2023/2/23.
//#import Foundation/Foundation.hinterface Person : NSObject {publicNSString* name;int age;
}(instancetype) person;(instancetype) personWithName:(NSString*)name age:(int)age;
- (instancetype) initWithName:(NSString*)name age:(int)age;
endimplementation Person(instancetype) person {return [Person new];
}(instancetype) personWithName:(NSString*)name age:(int)age {Person* person [Person new];person-name name;person-age age;return person;
}
- (instancetype) initWithName:(NSString*)name age:(int)age {self-name name;self-age age;return self;
}
// description方法用于改写打印本类对象时的输出内容格式类似于 Java 中的 toString() 。
- (NSString *)description {return [NSString stringWithFormat:%:%p name:% age:%d, [self class], self, self-name, self-age];
}
endint main(int argc, const char * argv[]) {NSArray* arr1 [NSArray new];NSArray* arr2 [NSArray array];NSArray* arr3 [NSArray arrayWithArray:arr1];Person* p1 [Person new];Person* p2 [Person person];Person* p3 [Person personWithName:wuyujin1997 age:26];NSLog(%, p1);NSLog(%, p2);NSLog(%, p3);[p1 initWithName:测试赋值 age:22]; // 已有对象只是调用 initXxx 方法去做属性值的赋值/初始化而已。NSLog(%, p1);return 0;
}输出
2023-02-26 20:02:19.7594340800 构造方法[29043:905161] Person:0x6000002033a0 name:(null) age:0
2023-02-26 20:02:19.7596610800 构造方法[29043:905161] Person:0x600000203400 name:(null) age:0
2023-02-26 20:02:19.7596840800 构造方法[29043:905161] Person:0x600000203460 name:wuyujin1997 age:26
2023-02-26 20:02:19.7597040800 构造方法[29043:905161] Person:0x6000002033a0 name:测试赋值 age:22
Program ended with exit code: 0