项目问题总结

盖士人读书,第一要有志,第二要有识,第三要有恒。有志则断不甘为下流;有识则知学问无穷,不敢以一得自足,如河泊之观海,如牛蛙之窥天,皆无识者也;有恒则断无不成之事。此三者缺一不可。 --------曾国藩

换工作快两个月了,这段时间一直在忙工作的事,也没有抽时间再写总结文章,好逸恶劳的本性也就慢慢显露出来了,在此自我批斗一下。以后不管写多写少,一定做事有恒。

一、小型模型数据存储

有一个需求是要存储正在播放音频的数据,由于音频的数据都已经被数据转模型了,且NSUserDefault无法存储对象类型,所以我们需要解归档。

#define PRO_STRONG @property (nonatomic,strong)
 PRO_STRONG NSString<Optional> *bookImg;
 PRO_STRONG NSString<Optional> *bookSubtitle;
 PRO_STRONG NSNumber<Optional> *length;
 PRO_STRONG NSNumber<Optional> *language;
 PRO_STRONG NSNumber<Optional> *updateTime;
- (void)encodeWithCoder:(NSCoder *)aCoder{
    [aCoder encodeObject:self.bookImg forKey:@"bookImg"];
    [aCoder encodeObject:self.bookSubtitle forKey:@"bookSubtitle"];
    
    [aCoder encodeObject:self.length forKey:@"length"];
    [aCoder encodeObject:self.language forKey:@"language"];
    [aCoder encodeObject:self.updateTime forKey:@"updateTime"];
}

- (id)initWithCoder:(NSCoder *)aDecoder{
    if (self = [super init]) {
        self.bookImg = [aDecoder decodeObjectForKey:@"bookImg"];
        self.bookSubtitle = [aDecoder decodeObjectForKey:@"bookSubtitle"];
        self.length = [aDecoder decodeObjectForKey:@"length"];
        self.language = [aDecoder decodeObjectForKey:@"language"];
        self.updateTime = [aDecoder decodeObjectForKey:@"updateTime"];
    }
    return self;
}

二、对象的赋值

问题:
对象A中的参数远少于对象B,但是要传值B的数据类型,这里难为了我好久。
办法:
其实也是很简单的问题。我们只需要将A对象的中相应的参数赋值给B就行了,数据不足就不足了,没必要求全,因为本身数据就不全。我就是犯了求全的错误。

三、修改Xib创建的View的frame

问题:Xib的frame本是无法修改的,我们可以通过设置来重新修改相应的值.

1、找到连线的View,然后找到具体的设置,如下图所示:
Xib的自适应参数.png

View的height.png
2、我们需要重新设置相应参数的值(constant)
#pragma mark 如果先被隐藏,然后再订课,那么就无法再次刷新,因为已经被隐藏,高度为0,所以我们需要重新设置。
- (void)hiddenBookViewCourse{
    //我们重新设置约束值
    self.bookViewCourse.hidden = YES;
    self.courseHeight.constant = 0;
}
- (void)displayBookViewCourse{
    self.bookViewCourse.hidden = NO;
    self.courseHeight.constant = 209.0;
}
3、为了防止Xib先覆盖掉我们做的处理,我们最好延迟加在我们的改动。
 [self performSelector:@selector(hiddenBookViewCourse) withObject:nil afterDelay:0.1];

四、在TabBarItem中随意跳转

CustomTabBarViewController为TabBarItem的容器,必须在项目中使用你的TabBarViewController的类,否则跳转无效。

- (IBAction)ViewAllButton:(id)sender {
    
    CustomTabBarViewController *tabbarVC = [[CustomTabBarViewController alloc]init];
    
    AppDelegate *appdelegateE = (AppDelegate*)[UIApplication sharedApplication].delegate;
    appdelegateE.window.rootViewController = tabbarVC;
    //跳转到第二个tabbarItem
    tabbarVC.selectedIndex = 1;
    
}

五、OC 中 覆盖属性会有提示Auto property synthesis will not synthesize property 'name' because it is 'readwrite' but it will be synthesized 'readonly' via another property

在项目的model中,子类和父类拥有相同的属性,然后就出现了这个问题。

1.问题原因:

通过声明属性,我们可以很简单的为一个成员变量定义其是否是只读的还是读写的,是否是原子操作的等等特性,也就是说如果说封装是为成员变量套了一层壳的话,那么 @property关键字做的事情就是预定义这层壳是个什么样子的壳,然后通过 @sythesize关键字生成真正的壳并把这个壳套在实际的成员变量上(如果没有定义这个成员变量该关键字也可以自动生成对应的成员变量)。当然这层壳包括了自动生成的 get set 方法。
在最开始的时候,我们在代码中写了@property对应的就要写一个@sythesize,在苹果使用了 LLVM 作为编译器以后,如果我们没有写 @sythesize,编译器就会为我们自动的生成一个 @sythesize property = _property。这个特性叫做Auto property synthesize。
Auto property synthesis will not synthesize property 'name' because it is 'readwrite' but it will be synthesized 'readonly' via another property

2.操作的处理过程

当我们想覆盖父类的属性并做一些修改的时候,Auto property synthesize这个特性就有点不知道该干嘛了,这个时候他选择不跑出来为我们干活,所以编译器就不会自动生成@sythesize property = _property,但是子类总得有个壳啊,人家都有@property了,怎么办?直接拿过来父类的壳复制一份不管三七二十一套在子类的成员变量身上。

3.解决办法

在子类中显式的声明一个@synthesize name = _name;就好,这样子类就会如愿的产生他的壳,编译器也不纠结了,就去掉了 warning,从此,天下太平~

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