2016.11.23

业务需求是固定搜索栏searchbar在view上,即使滚动也不影响,一开始直接设置frame,但一点击就会消失掉,不知为什么,网上找不到解决方法,后来想了一下换了一种思路解决了,代码如下,把搜索栏放到一块UIView里面,调整UIView的frame来addsubview到你需要的位置,代码如下

UIView*searchBarView = [[UIViewalloc]initWithFrame:CGRectMake(0.0,64.0,ScreenWidth,_searchController.searchBar.frame.size.height)];

[searchBarViewaddSubview:_searchController.searchBar];

//    _searchController.searchBar.frame = CGRectMake(0.0, 64.0 , ScreenWidth,44.0);

[self.viewaddSubview:searchBarView];


为什么Objective-C中不适用get前缀来表示属性获取方法?因为get在Objective-C中通常只用来表示从函数指针返回值的函数:


不要使用new方法,尽管很多时候能用new代替alloc init方法,但这可能会导致调试内存时出现不可预料的问题。Cocoa的规范就是使用alloc init方法,使用new会让一些读者困惑。

#import和#include

#import是Cocoa中常用的引用头文件的方式,它能自动防止重复引用文件,什么时候使用#import,什么时候使用#include呢?

当引用的是一个Objective-C或者Objective-C++的头文件时,使用#import

当引用的是一个C或者C++的头文件时,使用#include,这时必须要保证被引用的文件提供了保护域(#define guard)。


1.BOOL在Objective-C中被定义为signed char类型,这意味着一个BOOL类型的变量不仅仅可以表示YES(1)和NO(0)两个值,所以永远不要将BOOL类型变量直接和YES比较:


2.nil检查

因为在Objective-C中向nil对象发送命令是不会抛出异常或者导致崩溃的,只是完全的“什么都不干”,所以,只在程序中使用nil来做逻辑上的检查。

另外,不要使用诸如nil == Object或者Object == nil的形式来判断。

3.Thread Safe 线程安全

线程安全的代码能在多线程或并发任务中被安全的调用,而不会导致任何问题(数据损坏,崩溃,等)。线程不安全的代码在某个时刻只能在一个上下文中运行。一个线程安全代码的例子是 NSDictionary 。你可以在同一时间在多个线程中使用它而不会有问题。另一方面,NSMutableDictionary 就不是线程安全的,应该保证一次只能有一个线程访问它。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容