干什么错误日志平素在变,项目中碰到的一无可取1

by admin on 2019年8月15日

iOS学习(项目中相遇的荒唐1)

1.[AppModel copyWithZone:]: unrecognized selector sent to instance
0x7ffda9f4cf70

*** Terminating app due to uncaught exception
‘NSInvalidArgumentException’, reason: ‘-[AppModel copyWithZone:]:
unrecognized selector sent to instance 0x7ffda9f4cf70’

*** First throw call stack:

这种颠倒是非的原由:属性定义的主题材料应该注意在概念属性时即在概念

property时多少个冒出难点的只怕能

nonatomic:单线程,成效较高

atomic:八线程,功效优点低,可是是默许的

readWrite:可读可写,它也是默许的

readOnly:只可读

assign:指的是int,float.等数值类型,他是默许的

copy:指的是字符串对象。举例名字

retain:指的是指标。比如时间对象

strong:强引用

weak:弱引用

自家阴差阳错的因由就是在定义类对象时,误用了copy替代strong

2.
在应用tableView时会发掘一时那些办法不推行,原因:_tableView的frame未设置,还也有正是_dataArry未赋值是空的。还应该有一种正是在取的多寡时行使的是异步的议程,不过木有刷新tableView数据

– (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath{

return nil;

}

3.多少NSData未伊始化带来的不当

Terminating app due to uncaught exception ‘NSInvalidArgumentException’,
reason: ‘data parameter is nil’

4.只要收取的多少有为空时就能够产出如下错误

*** Terminating app due to uncaught exception ‘NSRangeException’,
reason: ‘*** -[__NSArrayM objectAtIndex:]: index 3 beyond bounds
[0 .. 2]’

 

) 1.[AppModel
copyWithZone:]: unrecognized selector sent to instance 0x7ffda9f4cf70
*** Terminating app due to uncaught exception NSInvalidArgu…

2016-06-23 10:27:54.634 ScrollViewVC[2038:62661] *** Assertion
failure in -[UITableView _configureCellForDisplay:forIndexPath:],
/BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3512.60.7/UITableView.m:7971

ios 为啥错误日志向来在变
: * NSForwarding: warning: selector (0x280e022b) for message ‘ayer’
does not match selector known to Objective C runtime (0x175f4f70)–
abort
: +[NSString ayer]: unrecognized selector sent to class 0x3827ae7c
: * Terminating app due to uncaught exception
‘NSInvalidArgumentException’, reason: ‘+[NSString ayer]: unrecognized
selector sent to class 0x3827ae7c’

概念

错误原因:
Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:]

解决方法:
cell复用的问题, 在tableView创建时添上下面这句就OK
[self.tableView registerClass:[XCBCell class] forCellReuseIdentifier:cellID];

那是首先次的错 那多少个ayer根本未有

    Property修饰关键字copy

 
   创造一个引用计数为1的二个指标,释放旧目的,然后赋值,此属性只对那一个举办了NSCopying协议的对象类型有效。copy方法私下认可是复制该对象的不可变别本。

    copy的setrer方法

/**干什么错误日志平素在变,项目中碰到的一无可取1。 第一种setter方法  ARC  模式下

@param Name 输入值 */

– (void)setName:(NSString *)Name{

    if(_Name != Name){

        _Name = nil;

        _Name = [Name copy];

    }

}

/** 第二种setter方法

@param Name 输入值 */

– (void)setName:(NSString *)Name{

        _干什么错误日志平素在变,项目中碰到的一无可取1。Name = [Name copy];

}

   
上述三种情势,依照概念落成setter方法的时候接纳第三个对象是稳当的,决断那么些指标的值是不是是该属性别变化量
的值,不是,首先让旧属性的变量置nil,ARC情势下,会平素将以此变量清空,释放,然后在复制一份输入值给那一个性格的变量。

   
然后依照自己写过的深、浅拷贝来举行解析。

   
怎么NSString会用copy修饰而不用Strong去修饰,首先先看本人的另一片关于Strong的小说,里面介绍了strong修饰属性的标题。

    上边是copy供给留意的,首先先达成贰个实例。

@interface CopyClass : NSObject

@property(copy,nonatomic)NSString *Name;

@property(copy,nonatomic)NSMutableString *MutableName;

@end

    将三个可变的NSMutableString
test1赋值给Name、MutableName
,再将test1的值更改,分别打字与印刷出来test1、Name、MutableName的内部存款和储蓄器地址。分析

NSMutableString *test1 = [[NSMutableString
alloc]initWithString:@”test”];

CopyClass *testClass = [[CopyClass alloc]init];

testClass.Name = test1;

testClass.MutableName = test1;

[test1 appendString:@”add 哈哈”];

打字与印刷结果:

2018-02-01 01:11:40.060493+0800 PropertyTest[1699:292294]
test1:0x10af30150–test哈哈哈

2018-02-01 01:11:40.060721+0800 PropertyTest[1699:292294]
testClass.Name:0x10af30130–test

2018-02-01 01:11:40.060951+0800 PropertyTest[1699:292294]
testClass.MutableName:0xa000000747365744–test

    唯有可变的NSMutableString
test1的值更动了别的的值都尚未改观。表明了copy是深拷贝。

    将二个不可变的NSString
test1赋值给Name、MutableName
,再将test1的值改动,分别打字与印刷出来test1、Name、MutableName的内部存储器地址。分析

NSString *test1 = @”test”;

CopyClass *testClass = [[CopyClass alloc]init];

testClass.Name = test1;

testClass.MutableName = [[NSMutableString
alloc]initWithString:test1];

test1 = @”test哈哈哈”;

    打印结果:

2018-02-01 01:19:46.227394+0800 PropertyTest[1775:323385]
test1:0x103701150–test哈哈哈

2018-02-01 01:19:46.227670+0800 PropertyTest[1775:323385]
testClass.Name:0x103701130–test

2018-02-01 01:19:46.227900+0800 PropertyTest[1775:323385]
testClass.MutableName:0xa000000747365744–test

     修改换量NSString
Test1的值其余的值都未有改换。表达了copy是深拷贝。

急需专注的是:

   
用copy修饰一个NSMutableString的性质时,将一个可变或不可变的变量的值赋值给它时,用这一个天性修改值的开始和结果会崩溃。实例剖判

// NSString *test1 = @”test”;

NSMutableString *test1 = [[NSMutableString
alloc]initWithString:@”test”];

CopyClass *testClass = [[CopyClass alloc]init];

testClass.MutableName = [[NSMutableString
alloc]initWithString:test1];

[testClass.MutableName appendString:@”ahhaha”];

NSLog(@”test1:%p–%@”,test1,test1);

NSLog(@”testClass.MutableName:%p–%@”,testClass.MutableName,testClass.MutableName);

崩溃日志:

2018-02-01 01:26:12.133086+0800 PropertyTest[1860:346864]
-[NSTaggedPointerString appendString:]: unrecognized selector sent
to instance 0xa000000747365744

2018-02-01 01:26:12.137246+0800 PropertyTest[home88一必发,1860:346864] ***
Terminating app due to uncaught exception
‘NSInvalidArgumentException’, reason: ‘-[NSTaggedPointerString
appendString:]: unrecognized selector sent to instance
0xa000000747365744’

    分析:reason:
‘-[NSTaggedPointerString
appendString:]: unrecognized selector sent to instance  
像NSTaggedPointerString那一个实例发送appendString音讯的时候从不找到这些方法,出现的倒台。

    原因是copy修饰的性质最终的值都以不可变的体系,testClass.MutableName
= [[NSMutableString alloc]initWithString:test1];
那行代码最后生成的值是NSString类型。用NSString的实例去调用appendString出现的夭亡。
 

    结论,用copy修饰的属性,都是不可变的变量。


: +[NSString olor]: unrecognized selector sent
: * Terminating app due to uncaught exception
‘NSInvalidArgumentException’, reason: ‘+[NSString olor]:

自定义对象的copy

    实例:

CopyClass *testClass = [[CopyClass alloc]init];

testClass.Name = @”test”;

testClass.MutableName = [[NSMutableString
alloc]initWithString:@”test1″];

CopyClass *copytest = [testClass copy];

    直接崩溃:崩溃日志

2018-02-01 01:37:52.146383+0800 PropertyTest[1982:395784]
-[CopyClass copyWithZone:]: unrecognized selector sent to instance
0x600000421c40

2018-02-01 01:37:52.152804+0800 PropertyTest[1982:395784] ***
Terminating app due to uncaught exception
‘NSInvalidArgumentException’, reason: ‘-[CopyClass copyWithZone:]:
unrecognized selector sent to instance 0x600000421c40’

   
分析:实例个中未有找到 copyWithZone方法,在自定义的类里面达成这一个艺术

– (instancetype)copyWithZone:(NSZone *)zone {

CopyClass *copyModel = [[CopyClass allocWithZone:zone] init];

copyModel.Name = self.Name;

copyModel.MutableName = self.MutableName; return copyModel;

}

    再一次运转完美。

二〇一四-06-23 10:38:04.096 调节和测验 image搜索代码错误行[2080:67919] ***
Terminating app due to uncaught exception ‘NSRangeException’, reason:
‘*** -[__NSArrayI objectAtIndex:]: index 2 beyond bounds [0 ..
1]’

那是第二遍的错 这些olor方法也未有

总结

    属性copy关键字是深拷贝;

    注意:1.以此个性被赋值的时候,都会转变来不可变的门类。

                2.正片对象的时候须要重写copyWithZone:方法。

错误原因:
数组下标越界

解决方法:
别让数组下表超出    最大值-1

: +[NSString ions]: unrecognized selector sent
: * Terminating app due to uncaught exception
‘NSInvalidArgumentException’, reason: ‘+[NSString ions]:

发散

    copyWithZone   是什么?

    挖坑 


那是第一遍的错 那些ions方法也远非

二零一五-06-25 11:23:55.017 tableView张开与接受[2847:110880]
-[__NSArrayI addObject:]: unrecognized selector sent to instance
0x7ff903e8b2e0

那几个该怎么去稳定错误 消除啊

不当原因:

这个是在tableView展开与收起的时候出错的,刚开始照别人的代码敲,结果马虎敲错了,修饰符敲成了  assign
@property (nonatomic, assign) NSMutableArray<NSNumber *> *isExpland; // 0展开,非0收起,这个是错的,应该用strong来形容

斩草除根办法:

@property (nonatomic, strong)NSMutableArray<NSNumber *> *isExpland;//是否展开

二〇一四-07-01 17:38:08.479 TableView设置页面[5161:242875] -[__NSArrayI
itemsArray]: unrecognized selector sent to instance 0x7fe473e9a690

不当原因:

这是在快速设置页面出现的错误
设置Model是这样的

在XCBModel.h 中

#import <Foundation/Foundation.h>

@interface XCBModel : NSObject

@property (nonatomic, copy) NSString *title;

@property (nonatomic, copy) NSString *iconStr;

+ (instancetype)itemWithIconStr:(NSString *)iconStr title:(NSString *)title;

+ (instancetype)settingItem;

@end
--------------------------
在XCBGroupModel.h中
#import <Foundation/Foundation.h>

@interface XCBGroupModel : NSObject

@property (nonatomic, copy) NSString *headerTitle;

@property (nonatomic, copy) NSString *footerTitle;

@property (nonatomic, strong) NSArray *itemsArray;


@end
--------------------------
在ViewController.m中

- (void)group1{

    //XCBGroupModel *group = [[XCBGroupModel alloc] init];

    XCBModel *item0 = [XCBModel itemWithIconStr:@"tab_0" title:@"双卡设置"];
    XCBModel *item1 = [XCBModel itemWithIconStr:@"tab_1" title:@"通话设置"];
    XCBModel *item2 = [XCBModel itemWithIconStr:@"tab_2" title:@"WLAN"];

itemsArray = @[item0,item1,item2];

 [self.groupArray addObject:itemsArray];

   // group.itemsArray = @[item0,item1,item2];

   // [self.groupArray addObject:group];

其中注释的是正确的,我原先的写法是错误的
}

在Xcode项目工程中冒出未有察觉.pch’ file not found

错误原因:

这就是.pch文件的路径问题,需要手动修改路径; 
相对路径和绝对路径的问题 

消除方法:

选中最上面的项目-->右边侧栏TARGETS-->找到Build Settings --> 搜索框搜prefix header-->下面找到Prefix Header-->双击
后面的路径打开编辑 。
在项目文件夹中找到文件夹Supporting Files-->找到public.pch直接拖进刚才的编辑框中,回车键ok

利用SourceTree进行git仓库管理
直接将项目中的多个文件拖进根目录,不需要  中间目录 (包裹在最外面那个单个目录,就是工程名,不需要工程做外层的文件夹) 

XXXXXXX does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), 
obtain an updated library from the vendor, or disable bitcode for this target.

请到 Xcode 项目的 Build Settings 标签页搜索 bitcode,将 Enable Bitcode 设置为 NO 即可。

2016-07-25 10:32:28.519 AFNetworking练习[2964:100109]
Error Domain=NSCocoaErrorDomain Code=3840 “JSON text did not start with
array or
object and option to allow fragments not set.”
UserInfo={NSDebugDescription=JSON text
did not start with array or object and option to allow fragments not
set.}

谬误原因:

因为AFNetworking默认解析数据是json格式
当前接口的返回格式不是 json(不是不支持json)

缓慢解决格局:

加上这句
mgr.responseSerializer = [AFHTTPResponseSerializer serializer];

2016-07-28 15:50:30.061 BugTest[6200:276389] -[SecondViewController
testBug]: unrecognized selector sent to instance 0x7f85e9d19fe0
2016-07-28 15:50:30.063 BugTest[6200:276389] *** Terminating app
due to uncaught exception ‘NSInvalidArgumentException’, reason:
‘-[SecondViewController testBug]: unrecognized selector sent to
instance 0x7f85e9d19fe0’

home88一必发 1

1.png

不当原因:

按钮事件没有实现

消除措施:

实现按钮事件:例如
- (void) testBug{

  // 要实现的功能;
}

错误:Thread 1:EXC_BAD_ACCESS(code=1,address=0x20746e756f78)

home88一必发 2

1.jpg

张冠李戴原因:对象被放飞后,引用计数为0.会调用dealloc方法销毁对象,销毁之后对象不能够被调用了。


发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图