11:安全处理
建议在定义NSArray和NSDictionary时使用类型标注,可以保证程序的安全性:
@property (nonatomic, strong) NSArray <GJRVipPayTypeModel *> *payTypesArr;
复制代码
向代理或block发送消息时需要判断其是否实现该方法
if ([self.delegate respondsToSelector:@selector(signUpViewControllerDidPressSignUpButton:)])
{
[self.delegate signUpViewControllerDidPressSignUpButton:self];
}
if(self.finishBlock)
{
self.finishBlock();
}
block weakself strongself --不一定每个都需要,写一个dealloc判断一下【每个类都写,避免内存泄漏】
12:私有变量
推荐以 _ 开头,写在 .m 文件中。例如 NSString * _somePrivateVariable
13: int a = 1;
NSCAssert(a == 2, @"a must equal to 2"); //第一个参数是条件,如果第一个参数不满足条件,就会记录并打印后面的字符串
14:工程基本样式 【自己14】
15:注释
对于类的注释写在当前类文件的顶部
对于属性的注释需要写在属性后面的地方。 //**<userId*/
对于 .h 文件中方法的注释,一律按快捷键 command+option+/。三个快捷键解决。按需在旁边对方法进行说明解释、返回值、参数的说明和解释
对于 .m 文件中的方法的注释,在方法的旁边添加 //。
注释符和注释内容需要间隔一个空格。 例如: // fetch goods list
16:
配置文件同样也分两种,分为开发(Development)和发布(Distribution),配置文件(Provisioning Profiles)中包含了证书、App ID、设备(Devices),后缀名为.mobileprovision。
它在开发者账号体系中扮演着配置和验证的角色,是--真机调试和--打包上架必须的文件。
17:代理相关的
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@protocol TestViewDelegate <NSObject>
- (void)iKnowButtClick;
@end
@interface TestView : UIView
@property (nonatomic, weak) id<TestViewDelegate> delegate;
@end
// TestView.m
- (void)buttClick{
//if ([self.delegate respondsToSelector:@selector(iKnowButtClick)]) {
[self.delegate iKnowButtClick];//代理类中 方法会被调用
//}
}
17:block
#import <UIKit/UIKit.h>
//typedef定义一下block,为了更好用
typedef void(^MyBlock)(NSString *string);
@interface MyFirstViewController : UIViewController
@property (nonatomic, copy) MyBlock block;
@end
- (IBAction)buttonBAction {
[self dismissViewControllerAnimated:YES completion:^{
}];
self.block(_myTextfielf.text);
}
//关键demo:
- (IBAction)buttonAction {
MyFirstViewController *myVC = [[MyFirstViewController alloc] init];
[self presentViewController:myVC animated:YES completion:^{
}];
__weak typeof(self) weakSelf = self;//防止循环引用
//用属性定义的注意:这里属性是不会自动补全的,方法就会自动补全
[myVC setBlock:^(NSString *string){
weakSelf.labelA.text = string;
}];
}
:::::谁定义block,就会向调用者返回值
18:xdealloc 每个类都要调用dealloc 防止内存泄漏
19:[NSObject cancelPreviousPerformRequestsWithTarget:self];
[NSObject cancelPreviousPerformRequestsWithTarget:self] 取消所有延迟方法的调用。
20:CocoaPods是iOS平台当前最流行的包管理工具,可以将它理解为一个可以自动部署到项目的组件池,而对应的podfile文件就相当于请求组件的Request。当组件下载到工程后,cocoaPods会自动完成组件集成到现有项目的工作,并完成修改.xcodeproj文件和创建.xcworkspace文件。最终将所有组件统一打包成Pods.framework静态库,供项目使用。