实践-小细节Ⅳ


1. 如何把 iphone中的视频导出到 iMac 桌面

Paste_Image.png

网上有很多方法,尝试起来都很麻烦,我这个方法还是比较简单的。
解决方法: 我们在手机用数据线连接到电脑时,会弹出很多手机里面的图片,你的隐私尽收眼底(好尴尬)。在1部分导入A视频文件,点击 2 (照片)的时候会在 3 的位置上出现,此时,我们直接把视频按住,拖到桌面即可,是不是很简单啊!

2. 如何替换Xcode整个工程中的某个字符串A为 B

xcode操作.gif

有时候我们会需要把工程中的某一个字符串A全部替换成 B,很多,上千个,也许你体力好,你 先查搜索出 存在 字符串A的类,几千个,然后一个一个点进去修改,,,,我只能说你体力好啊!

解决方法 如图所示,我们忽略了在Find 下面还有一个 Replace,但是需要指出的是 必须要先使用 Find 搜索出所有内容,再点击 Replace 才行,否则 Replace All按钮是灰色的,无法点击的。

3. Xcode磁盘空间大清理

移除对旧设备的支持
路径:~/Library/Developer/Xcode/iOS DeviceSupport

移除旧版本的模拟器支持
路径:~/Library/Application Support/iPhone Simulator

移除模拟器的临时文件
路径:~/Library/Application Support/iPhone Simulator/6.1/tmp (以iOS Simulator 6.1为例)

移除模拟器中安装的Apps
路径:~/Library/Application Support/iPhone Simulator/6.1/Applications (以iOS Simulator 6.1为例)

移除Archives
路径:~/Library/Developer/Xcode/Archives

移除DerivedData
路径:~/Library/Developer/Xcode/DerivedData

移除旧的Docsets
路径:~/Library/Developer/Shared/Documentation/DocSets

模拟器里面app的路径:
~/Library/Developer/CoreSimulator/Devices/{Device_ID}/data/Containers/Bundle/Application/{Application_ID}/

模拟器里面app的沙盒路径(此路径和app执行文件所在的路径是不一样的):
~/Library/Developer/CoreSimulator/Devices

模拟器SDK路径:
/Applications/Xcode6.1.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/

NSUserDefault 路径:
~/Library/Developer/CoreSimulator/Devices/{Device_ID}/data/Library/Preferences

Provisioning Profile文件在哪?
~/Library/MobileDevice/Provisioning Profiles

4.关于Xcode的Archives列表管理问题

我们在Xcode的账户中登录完一个帐户后,Archives一个工程后就会出现Archives列表,这个列表中会同步你所登录的全部账号的APP,如果你有多个账号在登录,那么多个账号中的APP都会在Archives列表中展示出来,不过值得一提的时,使用A账户打包的APP,不会同步到其他账户中,就算A和B同时登录,使用A打包的App在单独登录B账户时也不会有同步记录。

Paste_Image.png

**验证: 我们 删除本地的Archives缓存,我们进入到 资源库 -> Developer -> Xcode ->Products &Archives 删除这个路径下的Products 和Archives文件夹。退出A账户,再次登录B账户,打包任意一个项目,会出现Archives列表,这个时候会同步过来所有B账户的APP,在这个Archives列表中不会出现使用A账户打包的APP。 **

5. 指令集详解

  armv6
      iPhone、iPhone 3G
      iPod 1G、iPod 2G
  armv7
      iPhone 3GS、iPhone 4
      iPod 3G、iPod 4G、iPod 5G
      iPad、iPad 2、iPad 3、iPad Mini
  armv7s
      iPhone 5、iPhone 5C
      iPad 4
   arm64
      iPhone 5S   iPhone 6   iPhone 6Plus
      iPad Air, Retina iPad Mini

Build Active Architectures Only
该编译项用于设置是否只编译当前使用的设备对应的arm指令集。

当该选项设置成YES时,你连上一个armv7指令集的设备,就算你的Valid Architectures和Architectures都设置成armv7/armv7s/arm64,还是依然只会生成一个armv7指令集的二进制包。
通常情况下,该编译选项在Debug模式都设成YES,Release模式都设成NO。

6. RSA相关使用

其实公钥和私钥都可以用来加密或解密---只要能保证用A加密,就用B解密就行。至于A是公钥还是私钥,其实可以根据不同的用途而定。
既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出:
公钥负责加密,私钥负责解密
同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出:
私钥负责签名,公钥负责验证

7. 真机调试控制台不打印输出NSLog内容

以下的设置可以解决 iOS8控制台打印很多乱码的问题,但是同时也使真机调试时控制台没有打印输出。取消勾选即可(也就是没有执行这个设置),切换到模拟器的时候还是需要勾选上,否则还是会有乱码

Paste_Image.png

8.关于代理协议的一些细节

协议可以继承其他协议,并且可以继承多个协议,在iOS中对象是不支持多继承的,而协议可以多继承。

// 当前协议继承了三个协议,这样其他三个协议中的方法列表都会被继承过来
@protocol LoginProtocol <UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate>
@end

无论是@optional还是@required,在委托方调用代理方法时都需要做一个判断,判断代理是否实现当前方法,否则会导致崩溃。

示例:
// 判断代理对象是否实现这个方法,没有实现会导致崩溃
if ([self.delegate respondsToSelector:@selector(userLoginWithUsername:password:)]) {
    [self.delegate userLoginWithUsername:self.username.text password:self.password.text];
}

9.performSelector的总结

线程无关方法

- (id)performSelector:(SEL)aSelector;  
- (id)performSelector:(SEL)aSelector withObject:(id)object;  
- (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;

这三个方法,均为同步执行,与线程无关,主线程和子线程中均可调用。等同于直接调用该方法。在需要动态的去调用方法的时候去使用。

Delayed perform

- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay inModes:(NSArray *)modes;
- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay;
  • 这两个方法只能在主线程中执行,其它线程不执行
  • 即使delay传参为0,也不会立即执行,而是在next runloop执行

在方法未到执行时间之前,取消方法为

+ (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget selector:(SEL)aSelector object:(id)anArgument;
+ (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget;

on mainthread

- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait modes:(NSArray *)array;
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;
  • 这两个方法,在主线程和子线程中均可执行,均会在主线程中调aSelector方法
  • 如果设置wait为NO:等待当前线程执行完以后,主线程才会执行aSelector方法;
  • 设置为YES:不等待当前线程执行完,就在主线程上执行aSelector方法。
  • 第二个方法使用默认的模式(NSDefaultRunLoopMode)。
    主线程就马上执行 ~~。

10.在模拟器上的UITextFeld中输入 _ “确定“后就会崩溃。真机上不会崩溃。

NULL    (void *)0          literal null value for C pointers
nil (id)0               literal null value for Objective-C objects
Nil (Class)0             literal null value for Objective-C classes
NSNull  [NSNull null]     代表一个对象,这个对象的值是空
  • nil、Nil、NULL在使用上是没有什么区别的,但是程序员的一个约定:C结构的指针使用NULL;对象指针使用nil;类对象指针使用Nil。
  • 另外NSNull和nil、Nil、NULL具有本质上的区别。NSNull是一个对象,而nil、Nil、NULL只是给指针赋空值。

  • 在另外,给一个赋值为nil的对象发送消息,不会产生异常。当然给一个赋值为Nil、NULL的对象发送消息也不会产生异常,这个在例子中已经证实。故根据此条结论的总结为:nil、Nil、NULL目的都是给一个指针赋值为空,给空指针发送消息不会产生异常。

    比如 [[[MethodTool shareTool] getUserDefaults:@"locaUserId"] length]>0 
    如果本地没有储存这个值就返回 nil,对nil 发 length 消息是不会产生异常的,并且返回的是0
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,833评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,637评论 18 139
  • 史上最全的iOS面试题及答案 iOS面试小贴士———————————————回答好下面的足够了----------...
    Style_伟阅读 2,346评论 0 35
  • “小孩小孩你别馋,过了腊八就是年。腊八粥,喝几天,哩哩啦啦二十三;二十三,糖瓜粘;二十四,扫房子;二十五,...
    雨林中的阳光阅读 864评论 8 14
  • 与你共赏四季之下的珠光宝华,春日正好,湖心对岸长亭柳。夏荷漣静,百花丛中牡丹红。秋月流火,红枫对影弹箜篌。冬雪纷...
    提拉米苏的猫阅读 245评论 0 2