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: 添加内容到相册(写),会出现用户授权。 

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

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

12、设置圆角:layer.cornerRadius

设置圆角.png

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

用文本编辑器打开对应的  xib 文件,删除其中类似这样的一句话  

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适配信息):

NSAppTransportSecurity
    
        NSAllowsArbitraryLoads
        
    

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

iOS开发笔记《持续更新》_第1张图片
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 
实现代码
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

iOS开发笔记《持续更新》_第2张图片
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模拟器慢慢吞吞的,做什么都很慢,那你应该打开了这个:

iOS开发笔记《持续更新》_第3张图片
image.png

建议关闭后试试!

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

你可能感兴趣的:(iOS开发笔记《持续更新》)