摘要:
现象:往项目中添加一个 c 文件,编译器就会报错,只要将这个 c 文件删除掉,编译又会恢复正常。 原因:这个其实是 Xcode 编译中对 pch 文件的使用逻辑,项目中引入 c 文件后,pch 就会混合 #include 和 #import,为了降低编译器工作量,需要用预编译宏稍作区分。 解决方案: 阅读全文
摘要:
github上有【https://github.com/DyLanCao/bluetooth.git】 阅读全文
摘要:
一般是两个原因: 1、UIScrollView的偏移 if (@available(iOS 11, *)) { UIScrollView.appearance.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNev 阅读全文
摘要:
问题如下图: 这种东西挺鸡肋的,直接选择【关闭】为好: self.inputTextField.autocorrectionType = UITextAutocorrectionTypeNo; 阅读全文
摘要:
延迟执行函数: [self performSelector:@selector(connectionDidTimeout) withObject:nil afterDelay:kTimeoutInterval]; 在「超时时间」到来之前,可以取消定义的「延迟执行函数」: // 带的参数必须一样,才能 阅读全文
摘要:
背景需要: 把文件直接添加项目中,然后在项目中使用,这就涉及到一个概念,此时该文件是作为一个资源文件来加载的。 一般是三步走: (1)通过文件名称(NSString)获取到该文件在项目中的路径urlPath(NSString) (2)将urlPath转换为url(NSURL) (3)通过url获取到 阅读全文
摘要:
1、初建爽翻天,后期维护太难受。 使用xib创建视图,拖拖、添加布局线、做一些属性的拖拽、方法的拖拽,的确轻松,而且所见即所得; 后期维护时需要重新布局界面、添加一些新控件等,就麻烦起来了,总是怕漏掉什么,这是发现的确没有纯代码踏实。 阅读全文
摘要:
有个观念一定要搞清楚,首先xib文件对应的是一个UIView。理解到位后,关于这类问题就是一通则百通。 情况一: 如果在创建控制器时选择了“同时创建xib文件”,如下图所示,则在创建该控制器时,直接使用 alloc] init] 就行了。可以这样理解,通过这种方式创建控制器的同时,创建了一个xib文 阅读全文
摘要:
尽量避免使用鼠标,因为这是提高效率的关键之一:双手放在键盘上可以加快你的速度,而且更重要的是,可以让你更加快乐。 以下是无鼠标工作模式的一些优点: 将手从键盘移到鼠标很累。试试看不用移动手,你就明白了 双手一直放在键盘上会让你倍感轻松。你无需在敲键盘和移动光标之间不断切换 更容易养成盲打的习惯。如果 阅读全文
摘要:
背景 首先说明的是,这种情况的确是小概率事件 然后呢,原因也是很简单,但是如果单独从问题现象出发的确需要花时间debug 当然,问题也不是无缘无故就出现的,我前几天在整理sourcetree的使用培训文档,然后进行了很多的“骚操作”,目的是为了培训时的演示效果 究竟是怎样的情况呢,现象图片如下: 分 阅读全文
摘要:
请根据以下步骤逐步排查: 1、查看项目的配置信息 2、查看项目的Info信息 3、查看Info.plist文件 4、查看InfoPlist.strings文件 阅读全文
摘要:
不使用sceneDelegate、Main.storyboard 1、给AppDelegate添加window属性,并初始化window【Swift版本代码参考:swift纯代码新建项目】 OC代码如下: @interface AppDelegate : UIResponder @property 阅读全文
摘要:
背景 似乎是从Xcode11之后,打开项目,在目录结构中找不到了「Products」文件夹。 困扰 造成的困扰就是找不到.ipa文件了,如果是运行程序用来生成静态库的话,也无法找到.a后或者.framework文件了。 如何再现 找到项目文件.xcodeproj 右击「显示包内容」 打开 proje 阅读全文
摘要:
问题现象 通过NSBundle读取项目中的文件时,一般采用的方式是: //读取项目下的文件路径 NSBundle *bundle = [NSBundle mainBundle]; NSString *appFilePath = [bundle pathForResource:@"DeviceUpda 阅读全文
摘要:
示例代码 private(set) var isConnecting: [CBPeripheral : Bool] = [:] 说明: 除了使用函数做为获取接口的方法外,在swift中给出了private(set)申明的方式来限制外部对属性的修改.但在当前文件中依然可改. 例:private(set 阅读全文