iOS开发笔记《持续更新》

有遇到Apple账号申请问题,App上传Appstore问题,iTunes Connect相关问题,都可以根据您所在地区拨打相应的电话进行咨询,我以前打过【China English, 普通话 Mon-Fri, 09:00-17:00 CST 4006 701 855】:点击查看电话列表

1、生成随机数

int x = arc4random() % 9;生成以为随机数
生成6位随机数

    NSString *strRandom = @"";
    
    for(int i=0; i<7; i++)
    {
        strRandom = [strRandom stringByAppendingFormat:@"%i",(arc4random() % 9)];
    }
    NSLog(@"随机数: %@", strRandom);

2、判断App是否第一次启动

    if(![[NSUserDefaults standardUserDefaults] boolForKey:@"firstStart"]){
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"firstStart"];
        NSLog(@"第一次启动");
    }else{
        NSLog(@"不是第一次启动");
    }

3、UIView中的initWithFrame 和 initWithCoder

当我们所写的程序里没用用Nib文件(XIB)时,用代码控制视图内容,需要调用initWithFrame去初始化

- (id)initWithFrame:(CGRect)frame
{
    if (self =[super initWithFrame:frame]) {
        // 初始化代码
    }
    return self;
}

用于视图加载nib文件,从nib中加载对象实例时,使用 initWithCoder初始化这些实例对象

- (id)initWithCoder:(NSCoder*)coder
{
    if (self =[super initWithcoder:coder]) {
        // 初始化代码
    }
    return self;
}

4、一个Lable有多种颜色类似这样:

实例.png
NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"恭喜130****8565 于04月02日获得iPhone6s"];
    [str addAttribute:NSForegroundColorAttributeName value:[UIColor darkGrayColor] range:NSMakeRange(0,1)];
    [str addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(2,12)];
    [str addAttribute:NSForegroundColorAttributeName value:[UIColor lightGrayColor] range:NSMakeRange(15,5)];
    UILabel *attrLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 64, 320 - 40, 90)];
    attrLabel.attributedText = str;
    attrLabel.numberOfLines = 0;
    [self.view addSubview:attrLabel];

5、获取当前时间的年月日时分秒

6、
调用代码使APP进入后台
带中文的URL处理
取WebView高度
View设置图片
去TableView分割线
调cell分割线位置
七、Label注意事项
搜索条Cancel改标题
TableView收键盘
NSTimer
控制器没大小
十六进制取颜色
获取今天是星期几
UIView的部分圆角问题
滑动时隐藏navigationBar
iOS画虚线
自动布局多行UILabel问题
禁止运行时自动锁屏
KVC相关
用MBProgressHud问题
强制App直接退出
Label行间距
pod更新慢的问题
MRC和ARC混编设置方式
cell对勾颜色修改
同时按两个按钮问题
修改占位符颜色和大小
禁止复制粘贴
进入App在AppStore页面
隐藏系统tabbar
取消系统的返回手势
改WebView字体/颜色

7、 运行错误信息No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=armv7

运行报错出现的原因:armv7s是应用在iPhone 5 A6 的架构上的解决的方式:
1、在Project target里“Architectures”设置为“Standard (armv7,armv7s)”
2、修改在Project target里“Build Settings”的“Valid Architectures”添加“i386”和“armv7”(Xcode4.6 以上版本不再支持armv6,请去掉)
3、设置”Build Active Architecture Only”为“NO”。这样你build你的项目的时候就能在iphoe5和iphoe4s里执行。armv6, armv7, armv7s的区别

8、Mac 刷新DNS命令:

10.10.4 or later:
sudo killall -HUP mDNSResponder

10.10 ~ 10.10.3:
sudo discoveryutil mdnsflushcache

10.7 ~ 10.9.5:
sudo killall -HUP mDNSResponder

10.6 ~ 10.6.8:
sudo dscacheutil -flushcache

9、NSData和NSDictionary转换

获得的json先转换成字符串
NSString *receiveStr = [[NSString alloc]initWithData:receiveData encoding:NSUTF8StringEncoding];
字符串再生成
NSDataNSData * data = [receiveStr dataUsingEncoding:NSUTF8StringEncoding]; 
再解析  
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
就OK了 

10、
iOS10相关问题记录:
iOS10相册相机闪退bug
iOS 10 因苹果健康导致闪退 crash
麦克风、多媒体、地图、通讯录
ios10相机等崩溃

iOS10 配置须知
iOS开发 适配iOS10以及Xcode8
iOS 10 的适配问题

iOS对用户的安全和隐私的增强,在申请很多私有权限的时候都需要添加描述,但是,在使用Xcode 8之前的Xcode还是使用系统的权限通知框.
要想解决这个问题,只需要在info.plist添加NSContactsUsageDescription的key, value自己随意填写就可以,这里列举出对应的key(Source Code模式下):

iOS11以前: 
NSPhotoLibraryUsageDescription:访问相册和存储照片到相册(读写),会出现用户授权。 
iOS11之后: 
NSPhotoLibraryUsageDescription:无需添加。默认开启访问相册权限(读),无需用户授权。 
NSPhotoLibraryAddUsageDescription: 添加内容到相册(写),会出现用户授权。 

<!-- 相册 --> 
<key>NSPhotoLibraryUsageDescription</key> 
<string>App需要您的同意,才能访问相册</string> 
<!-- 相机 --> 
<key>NSCameraUsageDescription</key> 
<string>App需要您的同意,才能访问相机</string> 
<!-- 麦克风 --> 
<key>NSMicrophoneUsageDescription</key> 
<string>App需要您的同意,才能访问麦克风</string> 
<!-- 位置 --> 
<key>NSLocationUsageDescription</key> 
<string>App需要您的同意,才能访问位置</string> 
<!-- 在使用期间访问位置 --> 
<key>NSLocationWhenInUseUsageDescription</key> 
<string>App需要您的同意,才能在使用期间访问位置</string> 
<!-- 始终访问位置 --> 
<key>NSLocationAlwaysUsageDescription</key> 
<string>App需要您的同意,才能始终访问位置</string> 
<!-- 日历 --> 
<key>NSCalendarsUsageDescription</key> 
<string>App需要您的同意,才能访问日历</string> 
<!-- 提醒事项 --> 
<key>NSRemindersUsageDescription</key> 
<string>App需要您的同意,才能访问提醒事项</string> 
<!-- 运动与健身 --> 
<key>NSMotionUsageDescription</key> <string>App需要您的同意,才能访问运动与健身</string> 
<!-- 健康更新 --> 
<key>NSHealthUpdateUsageDescription</key> 
<string>App需要您的同意,才能访问健康更新 </string> 
<!-- 健康分享 --> 
<key>NSHealthShareUsageDescription</key> 
<string>App需要您的同意,才能访问健康分享</string> 
<!-- 蓝牙 --> 
<key>NSBluetoothPeripheralUsageDescription</key> 
<string>App需要您的同意,才能访问蓝牙</string> 
<!-- 媒体资料库 --> 
<key>NSAppleMusicUsageDescription</key> 
<string>App需要您的同意,才能访问媒体资料库</string>

11、tableView在编辑状态下的批量操作(多选)
注意:
** cell的selectionStyle不要设置为UITableViewSelectionStyleNone**

12、设置圆角:layer.cornerRadius

设置圆角.png

13、 解决iOS The document “(null)” requires Xcode 8.0 or later. 不能编译的问题:

用文本编辑器打开对应的  xib 文件,删除其中类似这样的一句话  <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>

14、 iOS中判断是从哪个控制器push进来的,返回指定控制器:

1、
push将控制器压到栈中,栈是先进后出;pop是出栈:即将控制器从栈中取出。
 NSArray*arrController =self.navigationController.viewControllers;
 NSInteger VcCount = arrController.count;
 //最后一个vc是自己,(-2)是倒数第二个是上一个控制器。
 UIViewController *lastVC = arrController[VcCount - 3];
// 返回到倒数第三个控制器
 if ([lastVC isKindOfClass:[XZViewController class]]) {
   [self.navigationController popToViewController:lastVC animated:YES];
}
2、
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];
3、
返回到指定的控制器:遍历一遍子控制器,判断一下哪个是要返回的控制器,进行返回
for (UIViewController *controller in self.navigationController.viewControllers) {

        if ([controller isKindOfClass:[XZViewController class]]) {

            [self.navigationController popToViewController:controller animated:YES];

        }

 }

15、关于iOS去除数组中重复数据的几种方法:连接

16、iOS9 适配(https适配信息):

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

17、Xcode 遇到这个问题**Installation Failed Invalid argument **

Installation Failed Invalid argument.png

解决方法:

Quit Xcode
Clean out ~/Library/Developer/Xcode/DerivedData manually
rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang/ModuleCache"
iOS Simulator > Reset Content and Settings

18、 iOS 获取Wifi的SSID及MAC地址

导入系统头文件
 #import <SystemConfiguration/CaptiveNetwork.h>
实现代码
NSString *ssid = @"Not Found";
    NSString *macIp = @"Not Found";
    CFArrayRef myArray = CNCopySupportedInterfaces();
    if (myArray != nil) {
        CFDictionaryRef myDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0));
        if (myDict != nil) {
            NSDictionary *dict = (NSDictionary*)CFBridgingRelease(myDict);
            
            ssid = [dict valueForKey:@"SSID"];
            macIp = [dict valueForKey:@"BSSID"];
        }
    }
    UIAlertView *av = [[UIAlertView alloc] initWithTitle:ssid
                                                 message:macIp
                                                delegate:nil
                                       cancelButtonTitle:nil
                                       otherButtonTitles:@"OK", nil];
    [av show];

19、iOS 获取当前设备型号iPhone7/iPhone7P

20、解决10.12安全与隐私没有允许任何来源的选项
在终端里输入:sudo spctl --master-disable 然后回车即可在安全选项中看到重新出现的允许任何来源选项!

21、真机调试:Development cannot be enabled while your device is locked.
解决方法:打开手机设置->通用->还原->还原位置与隐私;
拔掉数据线,重启xocde 8开启项目, 重新插上数据线,此时手机上会显示mac与手机设备的连接访问权限,选择“信任”,

22、iOS不支持64系统报错的解决方法:
错误No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=armv7, VA

Paste_Image.png

解决方法:
运行报错出现的原因:armv7s是应用在iPhone 5 A6 的架构上的解决的方式:

1,在Project target里“Architectures”设置为“Standard (armv7,armv7s)”
2,修改在Project target里“Build Settings”的“Valid Architectures”添加“i386”和“armv7”(Xcode4.6 以上版本不再支持armv6,请去掉)
3,设置”Build Active Architecture Only”为“NO”。这样你build你的项目的时候就能在iphoe5和iphoe4s里执行。armv6, armv7, armv7s的区别

No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386)

23 如果你的项目莫名奇妙的出现

: Linker command failed with exit code 1 (use -v to see invocation)

Paste_Image.png

解决:好吧我不知道为啥Xcode8之后就没法看详情了。但是可能是BitCode搞得鬼


自记:用callkit的时候,记入带区号的号码时格式如010 ->10不要带0

24 Signing for "" requires a development team. Select a developm

http://stackoverflow.com/questions/43334982/trying-to-build-to-tablet-wanted-dev-team-profile-added-one-but-now-failing-f

25 真机调试出现这个错误

This application's application-identifier entitlement does not match that of the installed application. These values must match for an upgrade to be allowed

解决方法:
1、Xcode-Window->Devices
2、选中你的设备,在右边的installed Apps中删除这个App
3、重新编绎即可

26 addSubview和insertSubview的理解(自己记录便于查询)

  addSubview是一层一层往上加,新加的只能放到父视图的最上层, 
  insertSubView可以控制它添加到父视图的哪一层 

A addSubview B  是将B直接覆盖在A的最上层 

A insertSubView B AtIndex:2 是将B插入到A的子视图index为2的位置(最底下是0) 

A insertSubView B aboveSubview:C  是将B插入A并且在A已有的子视图C的上面 

A insertSubView B belowSubview:C  是将B插入A并且在A已有的子视图C的下面

27 如果你发现自己的iPhone模拟器慢慢吞吞的,做什么都很慢,那你应该打开了这个:

image.png

建议关闭后试试!

声明:这些知识也都是我用到过然后从网络上找的别人的,主要是方便自己查阅。顺便分享出来希望可以帮到正好需要的朋友!

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

推荐阅读更多精彩内容