iOS开发经典问题记录

持续更新…

文章目录

  • Copy/assign/weak/stong/retain使用总结
  • 自定义ui控件property使用strong还是weak
  • info.plist文件介绍:修改app名称
  • .pch头文件内容 全局共用
  • 创建不包含stoaryboard的项目
  • 保存透明文件到相册-code
  • xcode设置中文属性
  • 无法显示模拟器
  • 定时器动画刷帧
  • info.plist文件移动到Supporting Filse报错
  • 键盘弹出/键盘输入/中文输入法
  • mac锁屏恢复后wifi一直转圈

Copy/assign/weak/stong/retain使用总结

什么情况用什么类型?

  • @property (nonatmic, copy/assing/weak/strong)

  • Copy- string/NSMutableString/block

  • Assign-基本数据类型

  • Weak-ui控件 代理 id delegate

  • Strong-其他类的成员变量. 其他oc对象

  • strong强指针 强引用,只要有指针还连接着该对象,那么该对象就不会被销毁。 (循环引用,内存泄露)

  • weak弱指针 弱引用,只要该对像为空,那么所有指针都为空。

  • iOS5以后 retain = strong assign = weak

//打印各种结构体
NSLog(@"%@", NSStringFromCGPoint(self.view.center));   *//打印结构体*

自定义ui控件property使用strong还是weak

//如果使用strong
@property (nonatomic, strong) UIDatePicker *myDatePicker;
self.myDatePicker = [[UIDatePicker alloc] init];
直接操作self.myDatePicker

//如果使用weak
@property (nonatomic, weak) UIDatePicker *myDatePicker;
UIDatePicker *myDatePicker = [[UIDatePicker alloc] init];
myDatePicker.center = self.view.center;
[self.view addSubview:myDatePicker];
self.myDatePicker = myDatePicker;   
//监听值的改变
[self.myDatePicker addTarget:self action:@selector(datePickerDateChanged:) forControlEvents:UIControlEventValueChanged];

info.plist文件介绍:修改app名称

Bundle name $(product_name) 对应软件名称, 修改后需要clean, 卸载原先软件

.pch头文件内容 全局共用

#ifdef __OBJC__  //下边定义只能用到.m .mm文件
//自动打开关闭日志功能
#ifdef DEBUG  //调试阶段
#define DWLog(...) NSLog(__VA_ARGS__)   //一键注释所有log
#else	 //发布阶段
#define DWLog(...)
#endif
#endif

PCH使用
https://www.jianshu.com/p/2e839ef4768d

创建不包含stoaryboard的项目

  • 删除sb
  • 去除plist中的main入口

保存透明文件到相册-code

//保存到手机相册时,就变成了白色底
NSData* data = UIImagePNGRepresentation(image);
UIImage* pngImage = [UIImage imageWithData:imageData];
UIImageWriteToSavedPhotosAlbum(pngImage, nil, nil, nil);

xcode设置中文属性

  • 在info.plist中设置local属性为china

无法显示模拟器

方法一:

1.关闭Xcode。

2.找到要打开的应用程序的:程序名.xcodeproj,右键-显示包内容。

3.看到里面有三个文件:project.pbxproj、project.xcworkspace和xcuserdata。把整个xcuserdata拖进废纸篓。

4.重新打开应用程序就好了。

方法二:

也搜索到有人用这个方法,不知道行不行:在打开的应用程序中找到:target->built settings->Architectures->Base SDK.改成需要的iOS版本

方法三:

修改一下 project支持的ios版本 ,因为我们好多新建的项目版本的默认支持的版本都是当前Xcode 最高的版本,所以你只需要在项目的project 的地方去修改一下支持的版本就行了

progect - info - iOS Deployment Target

定时器动画刷帧

//创建 刷帧1秒60次
CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(setNeedsDisplay)];
//启动
[link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];


//定时器
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(setNeedsDisplay) userInfo:nil repeats:YES];

info.plist文件移动到Supporting Filse报错

error:Build input file cannot be found:

设置项目 TARGETS->Build Settings->Packaging->info.plist

路径设置在Supporting Files下

键盘弹出/键盘输入/中文输入法

打开关闭模拟器键盘

command + k

mac键盘能否输入

Hardware-Keyboard-Connect Hardware Keyboard 快捷键: command + shift + k

切换中文输入法

Settings-->General-->Language & Region-->iPhone Language -->简体中文; Region -->中国

mac锁屏恢复后wifi一直转圈

airportd占用cpu过高,sudo killall airportd

你可能感兴趣的:(iOS开发经典问题记录)