2020-12-07(5)自己_2

2020-12-09  本文已影响0人  想在月球上弹琴的孩子

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静态库,供项目使用。

上一篇下一篇

猜你喜欢

热点阅读