iOS开发
文章平均质量分 66
Jarlen John
记录学习过程,见证技术成长! Stay hungry,Stay foolish!
展开
-
Objectiv-C设计模式笔记
原型模式:使用原型实例指定创建对象的种类,并通过复制这个原型创建新的对象。在iOS中原型模式本质是使用了对象的复制机制。遵守NSCopying协议,实现copywithzone方法实现对象的深复制。也称为虚构造器(virtual constructor)定义创建对象的接口,让子类决定实例化哪一个类。工厂方法使得一个类的实例化延迟到其子类。提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。将一个复杂对象的构建与它的表现分离,使得同样的构建过程可以创建不同的表现。原创 2023-12-26 22:32:39 · 1108 阅读 · 0 评论 -
AVFoundation那些事儿(一)
AVFoundation主要由两个方面组成,处理音视频部分的API和单纯处理音频的API构成。视频部分下述详细介绍,关于遗留的音频老API,它给我们提供了简洁高效的处理音频的方式。播放音频,使用录制音频,使用更多音频操作使用以上是本人在使用AVFoundation过程中遇到的问题,也是对该部分使用后的反思总结。如有错误,恳请各位批评指正!原创 2023-12-19 18:35:16 · 1944 阅读 · 0 评论 -
separating axis test——分离轴测试算法的实现
旋转后矩形相交问题解决原创 2022-06-28 18:55:11 · 691 阅读 · 0 评论 -
有用的代码片段记录
从纹理获取CVPixelBufferRef对象id<MTLTexture>生成CVPixelBufferRef- (CVPixelBufferRef)getPixelBufferFromBGRAMTLTexture:(id<MTLTexture>)texture { CVPixelBufferRef pxbuffer = NULL; NSDictionary *options = [NSDictionary dictionaryWithObjectsAn原创 2022-04-11 17:18:36 · 534 阅读 · 0 评论 -
iOS开发遇到的问题及解决记录
iOS问题及解决记录Xcode 12.5 "code signature version is no longer supported"Apple has changed the codesign signature to include DER encoded entitlements in addition to the plist encoded entitlements. This additional DER encoded entitlements section is required原创 2021-11-23 10:00:21 · 845 阅读 · 0 评论 -
老生常谈:frame和Bounds的区别
UIView及NSView等控件常有的frame和bounds有何不同呢?UIView的bounds是一个矩形,它表示在自身坐标系中的位置(x、y)和大小(width、height)。UIView的frame也是一个矩形,它表示该视图在父视图坐标系中的位置(x、y)和大小(width、height)。因此,假设现在有view大小为100x100,在父视图的位置为(25,25),如下代码打印出...转载 2019-03-06 19:04:28 · 2466 阅读 · 0 评论 -
'NSUnknownKeyException', reason: … this class is not key value coding-compliant for the key X 之追根溯源
问题在开发过程中,连接UILabel到xib中时出现以下错误:* Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[&amp;amp;amp;lt;UIViewController 0x6e36ae0&amp;amp;amp;gt; setValue:forUndefinedKey:]: this class is not key val...原创 2019-02-20 18:50:38 · 719 阅读 · 0 评论 -
NS前缀表达的意思
在Cocoa或者Cocoa Touch中很多类都是以NS为前缀,为什么?有什么含义?它是继承自 NeXTSTEP ,Cocoa框架的源代码很多来自NexSTEP库的Foundation和AppKit中(那些名字仍在Apple的Cocoa框架中使用),NextStep公司的工程师选择的NS作为他们的类前缀,因此使用到了现在。因为Objective-C是C语言的扩展,它不想C++那样有命名空间,为...原创 2019-03-05 10:05:54 · 830 阅读 · 0 评论 -
@class 与#import的关系
问题根据我的理解,在ClassA需要包含ClassB的头文件同时ClassB需要包含ClassA的头文件的情况下,为了避免任何循环引用,应该使用forward-class声明。#import本质就是一个简单的#ifndef,因此引用头文件只会出现一次。问题是:我们何时该使用#import何时使用@class,有时在使用@class的情况下,会出现编译器警告,信息如下:warning: re...原创 2019-02-25 19:03:47 · 279 阅读 · 0 评论 -
遍历NSArray的高效方法
问题:OSX10.4以上遍历NSArray的标准用法是什么?OSX10.5+/iOS6以上系统在OSX10.5+/iOS6以上系统中,通常最好的方式是如下:for (id object in array) { } 上述结构常用来遍历一个遵守NSFastEnumeration协议的集合中的对象。这种方法具有速度优势,因为它将指向多个对象的指针(通过一个方法调用获得)存储在一个...转载 2019-03-14 22:05:02 · 433 阅读 · 0 评论 -
Objective-c/Cocoa如何抛出异常
Objective-c/Cocoa抛出异常(Exception)的最好方式是什么?回复:抛出异常的方式平常使用[NSException raise:format:],示例如下:[NSException raise:@"Invalid foo value" format:@"foo of %d is invalid", foo];或者:@throw([NSException excep...转载 2019-03-15 10:03:32 · 376 阅读 · 0 评论 -
OC语言如何打印方法名和行号,并有条件地禁用NSLog?
需求:是否能够实现NSLog打印当前调用的方法名和行号?能否根据当前开发环境还是发布环境禁用NSLog的输出?实现:采用宏定义实现,其中:DLog仅在DEBUG模式下输出内容,Release模式不输出任何内容ALog无论在何种模式均输出,例如ALog(@"Hello word");输出结果如下:-[LibraryController awakeFromNib] [Line 364...原创 2019-03-12 10:14:29 · 673 阅读 · 0 评论 -
通过NSLog打印结构体类型数据(如CGRect或CGPoint)
结论NSLog(@"%@", NSStringFromCGPoint(cgPoint));其他可用方法有:NSStringFromCGPoint NSStringFromCGSize NSStringFromCGRect NSStringFromCGAffineTransform NSStringFromUIEdgeInsets示例:NSLog(@"rect1: %...翻译 2019-03-19 10:01:07 · 1113 阅读 · 0 评论 -
移除自定义NSMenu的上下空白间距
在自定义pop-up menu过程中,我想实现灰色背景上覆盖亮色文字,此过程中使用了NSMenuItem的setView:方法,成功实现。但是,NSMenu在菜单的顶部和底部以浅色绘制4像素高的条带,这在很大程度上破坏了外观,因为NSMenu没有公共API可以改变此情况,如何解决?方案通过为NSMenu添加分类的办法解决。头文件如下:@interface NSMenu (zzl_noPad...原创 2019-03-27 10:00:35 · 401 阅读 · 0 评论 -
objectForKey:和valueForKey:区别
函数原型如下:- (ObjectType)objectForKey:(KeyType)aKey;- (ObjectType)valueForKey:(NSString *)*key*;objectForKey:是一个NSDictionary的方法。字典是类似NSArray的集合类,它不使用索引的方式检索元素,而是使用键获取和设置元素。字典中的键名必须不同。valueForKey:是KV...原创 2019-04-10 10:07:27 · 1534 阅读 · 0 评论 -
编写高质量iOS与OS X代码的52个有效方法学习总结
1.掌握C语言的内存模型与指针2.在类的头文件中尽量少引入其他头文件可以降低类耦合,减少编译时间,增加代码优雅度。使用@class前向声明,将引入位置尽量后移,只在却有需要时引入,主要有以下几种情况:如果你写的类继承自某个类个超类,则必须引入定义那个超类的头文件。声明写的类遵守某个协议,那么该协议必须有完整定义,且不能使用前向声明。3.多用字面量语法,少用与之等价的方法如:NSNu...原创 2019-04-12 08:37:30 · 265 阅读 · 0 评论 -
MacOS开发-用命令行压缩文件
MacOS开发-用命令行压缩文件在Mac OS X中,你可以通过右键上下文菜单中的”压缩xxx“选项制作压缩文件,但是,该方式创建的压缩文件和通过命令行zip创建的压缩文件不同。这种区别至少影响了Apple提供的一项服务操作,那就是无法接受通过zip命令创建归档文件zip -jr AppName.zip AppName.app如果手动创建,就会影响自动化发布流程。那么,如何通过终端创建一...原创 2019-08-14 12:19:52 · 2095 阅读 · 0 评论 -
@synthesize和@dynamic的关系?
@dynamic和@synthesize@property中使用@dynamic和@synthesize有何不同呢?@synthesize将为属性自动生成getter和setter方法。@dynamic仅告诉编译器该属性的getter和setter方法不在类本身,而在其他地方(如父类或者在运行时中提供)。如果你没有手动实现 setter 方法和 getter 方法,那么编译器会自动为你加上...转载 2019-03-01 10:20:43 · 517 阅读 · 0 评论 -
如何检查iOS或macOS网络连接是否可用?
开发过程中,需要监听网络的连接状态,那么如何去监听呢?Swift版本通过CocoaPods或者Carthage安装Reachability,地址:https://github.com/ashleymills/Reachability.swift通过闭包测试reachabilitylet reachability = Reachability()!reachability.whe...原创 2019-02-19 10:54:09 · 1554 阅读 · 0 评论 -
对OC中BOOL值在debug和release模式下不同的问题分析和总结
背景:- (NSData *)getData{ BOOL isReaded; while (!isReaded) { NSLog(@"balalala"); } }在Debug模式下运行程序一切正常,将Edit Scheme中build configuration改为Release模式运行程序,打印不会输出。此处是BOOL变量isReaded...原创 2018-07-17 15:24:15 · 570 阅读 · 0 评论 -
cast of NSInteger (aka int) to id is disallowed withARC
由于使用了ARC,系统会提示 Cast of ‘int’ to ‘id’ is disallowed with ARC 解决方案一: buildseting –搜auto 然后把object-c++ auto…设置no解决方案二: 引用块内容可以设置某个文件不适用ARC的。在target中的compile sources中,将该文件指定成-fno-objc-arc就...转载 2018-07-17 10:55:16 · 1310 阅读 · 0 评论 -
iOS 常见的URL Schemes
有时候我们的APP需要打开第三方应用程序,此时就需要知道要打开应用程序的URL Schemes,下面简要罗列常用APP的URL Schemes。亲测可用:1.打开系统隐私中的定位服务:App-Prefs:root=Privacy&path=LOCATION 2.打开系统隐私中的相册权限:App-Prefs:root=Privacy&path=PHOTOS 3.打开系统隐...原创 2018-02-27 09:09:47 · 8887 阅读 · 0 评论 -
iOS开发过程遇到的问题及解决方法
Xcode代码提示功能消失UITableView的Group样式下顶部空白处理UITableView的plain样式下,取消区头停滞效果获取某个view所在的控制器两种方法删除NSUserDefaults所有记录打印系统所有已注册的字体名称获取图片某一点的颜色字符串反转禁止锁屏模态推出透明界面Xcode调试不显示内存占用Mac显示隐藏文件iOS跳转到App St...原创 2017-12-23 11:52:17 · 1163 阅读 · 0 评论 -
iOS中5+SDK项目升级个推静态库.a为.framework
说明上篇写了升级5+SDK的文章: iOS离线打包项目升级5+SDK本文属于上文补充,因为要适配iPhone X,原谅我穷买不起真机,只能用模拟机调试,在调试过程中发现一个个推致命的bug:malloc: *** error for object 0x170242490: Invalid pointer dequeued from free list *** set a breakpoint in原创 2017-12-25 10:08:55 · 743 阅读 · 2 评论 -
iOS离线打包项目升级5+SDK
随着iPhone X发布及公司项目需求,目前采用的5+SDK必须面对升级的问题。自从接手该项目来貌似SDK只升级过一次。昨天已经将一个项目升级成2017年11月30日发布的最新SDK,期间遇到了很多问题,最终一一克服,现总结整理下,方便后续再次升级使用。项目结构 为了升级安全,先将项目备份。下面开始升级:(1)替换SDK 用最新SDK文件替换项目中SDK(2) 将Pandora原创 2017-12-21 09:08:27 · 1702 阅读 · 1 评论 -
Xcode结合Terminal终端对SVN的使用
Git和SVN是大家常用的版本管理工具,在自己学习过程中常使用Git管理,Xcode也很好的支持了Git,但是公司项目使用的是SVN,自己会基本的使用,但是一直有点迷糊。现结合目前项目中遇到的问题做个总结。1. Xcode中SVN各种符号表示的含义‘A’ 新增‘D’ 删除‘M’ 修改‘R’ 替代‘C’ 冲突‘I’ 忽略‘?’ 未受控‘!’ 丢失,一般是将...原创 2017-12-20 09:13:04 · 533 阅读 · 0 评论 -
Objective-C打印调试信息
Objective-C调试之打印调用方法或代码所在的行号很多开发者会有这样的疑问,在iOS开发或者MacOS开发中, 如何将上下文信息(例如当前调用方法或代码所在的行号)添加到我的打印语句中?本文小试牛刀,提供相关的信息。我们知道,C预处理器提供了许多标准宏,可以提供有关当前文件、行号或函数的信息。另外,Objective-C有_cmd隐式参数,它给出了当前方法的选择器,以及将选择器和类转...原创 2018-07-20 17:03:55 · 1756 阅读 · 0 评论 -
OC中属性和成员变量的区别&联系
成员变量和属性在Objective-C语法中,变量有两种写法,一种是以 @property 形式声明的属性,另一种是定义在大括号里 (@interface :NSObject{} )的成员变量( instance variable )。@interface MyObject : NSObject { NSInteger memberVar; // 成员变量}@proper...转载 2018-07-26 10:41:26 · 1703 阅读 · 0 评论 -
Cocoa Autolayout:content hugging 和 content compression resistance priority的区别
总思路概念简介:Hugging => 内容不想增加。Content Hugging Priority即内容压缩优先级。Compression Resistance => 内容不想缩小。Content Compression Resistance Priority 称为内容抗压缩优先级举例如下:假设你已经得到一个按钮如下:[ Click Me ]...原创 2019-02-28 10:24:53 · 261 阅读 · 0 评论 -
Objective-C如何创建delegate
快速创建一个代理MyClass.h文件内容如下:#import &lt;BlaClass/BlaClass.h&gt;@class MyClass; //define class, so protocol can see MyClass@protocol MyClassDelegate &lt;NSObject&gt; //define delegate pr...原创 2019-02-23 10:26:11 · 525 阅读 · 0 评论 -
Objective-C中的常量
在Cocoa开发过程中,偏好设置中的键名使用 constant NSString保存。我认为这是一个很好的idea,因为在必要的时候该方式允许我们方便改变常量值,而且,符合将数据和逻辑分离的理念。疑惑有没有一种好方法可以让这些常量在整个应用程序中定义一次?我确信有一种简单而聪明的方法,但是现在我的类只是重新定义它们使用的类。好的建议创建Constants类创建一个Constants类,然...原创 2019-02-21 22:43:55 · 527 阅读 · 0 评论 -
如何本地化(iOS/watchOS/macOS) Bundle显示名称
本地化应用名称非常简单,让我们开始吧。设置本地化首先,确保你已经设置了本地化需要的其他语言(注意,并不需要完全本地化整个应用,只是显示名称)。选中项目的project navigator,找到Localizations,然后选择一个需要本地化显示的语言,如图所示:创建Strings文件接着,你必须创建一个Strings文件,该文件包含你需要本地化的包名称。找到File-> New-...转载 2019-01-30 11:48:03 · 1516 阅读 · 0 评论 -
iOS/MacOS中二进制数据的处理
文章目录iOS/MacOS中二进制数据的处理何为大小端模式?为何有大小端之分?判断大小端NSString转DataData转NSStringint转DataData转intint转bytesbytes转intiOS/MacOS中二进制数据的处理何为大小端模式?在处理二进制数据的时候,首先要注意区分使用大端模式(Big-endian)还是小端模式(Little-endian),何为大小端模式呢...原创 2018-11-01 14:19:29 · 1561 阅读 · 0 评论 -
Release环境关闭NSAssert断言
Release环境关闭NSAssert断言在开发过程中,我们为了判断程序运行状态,确保数据非空的问题,需要在程序中使用NSAssert()函数进行断言,以便在开发过程中及早发现问题,同时根据设置的提示信息,我们可以快速地定位到错误发生的位置。如下所示:NSAssert(date != nil, @"date must be non-nil");在发布环境下,我们不再使用断言,以尽可能避...原创 2018-09-04 10:39:32 · 1723 阅读 · 0 评论 -
Objective-C中nil 、Nil、NULL、NSNull的区别
转载自nil、Nil、NULL、NSNull的区别nil:指向一个对象的空指针,对objective c id 对象赋空值.Nil:指向一个类的空指针,表示对类进行赋空值.NULL:指向其他类型(如:基本类型、C类型)的空指针, 用于对非对象指针赋空值.NSNull:在集合对象中,表示空值的对象.1.nil 表示指向一个对象的指针为空 定义如下:#ifndef nil# ...转载 2018-08-01 11:14:14 · 439 阅读 · 0 评论 -
Objective-C实现图片生成缩略图
/** 由图片生成缩略图 */static NSImage *ATThumbnailImageFromImage(NSImage *image) { NSSize imageSize = [image size]; CGFloat imageAspectRatio = imageSize.width / imageSize.height; NSSize thumbnai...原创 2018-07-31 20:14:14 · 555 阅读 · 0 评论 -
Mac上基于Xcode 8.3.2, iOS 10.3(模拟器)搭建Appium 1.6.5 测试环境
Mac上基于Xcode 8.3.2, iOS 10.3(模拟器)搭建Appium 1.6.3 测试环境由于公司自动化测试需要,在项目开发过程中需要给测试部门配置测试环境,第一次接触四处碰壁,好在自己坚持,最终实现模拟机和真机测试。先总结如下,便于以后使用。安装环境Mac电脑一台,系统版本10.12.5Xcode软件,版本号8.3.1,对应模拟机系统10.3安装步骤安装nodejs 为了后原创 2017-06-01 14:58:21 · 636 阅读 · 0 评论