Tag: Objective C

Xcode 8.3中有哪些新功能?

Swift 2.3弃用 Xcode 8.3 beta 2不再支持Swift 2.3。 请通过打开项目并选择“编辑”>“转换”>“转换为当前Swift语法”,将包含Swift 2.3代码的项目迁移到Swift 3语法。 其他折旧和拆除通知 自动化仪器已从仪器中删除。 在其位置使用Xcode的UI测试。 组织者 Xcode Organizer现在支持导出tvOS应用以进行企业分发。 测试中 在XCTest中添加了XCUISiriService类,以编写用于通过语音识别字符串激活Siri并在Siri UI中查询元素的测试。 使用该类为Intent和Intents UI扩展编写UI测试。 Swift编译器 Swift编译器现在可以自动预编译Objective-C桥接头,这可以加快带有大型桥接头的混合源项目的Debug配置版本(或其他非WMO版本)的速度。 此功能仍处于试验阶段,默认情况下处于禁用状态,但可以使用Xcode中的“预编译桥接头”(SWIFT_PRECOMPILE_BRIDGING_HEADER)构建配置设置来启用。 供应 更改了用于管理签名证书和配置文件的用户界面。 通过选择团队并单击“管理证书”,可以从“帐户”首选项窗格中管理证书。 建议自动管理签名,但是,如果您的应用需要手动签名,则可以在项目编辑器的“常规”选项卡中管理配置文件。 使用“供应配置文件”下拉列表导入或下载配置文件。 此外,它还显示与目标的当前签名配置匹配的配置文件。 仿真器 在Simulator的“设置”应用中启用Siri后,可以使用“硬件”>“ Siri”来调用Siri。 界面生成器 现在,在Interface Builder中创建的NSTextField对象默认情况下已关闭allowCharacterPickerTouchBarItem 。 Interface Builder支持设置AdjustsFontForContentSizeCategory设置,以在用户更改设置时自动调整动态类型。 建立系统 Xcode中的“ Precompile Bridging Header”构建配置设置默认情况下设置为YES。 这将激活Swift编译器对自动预编译Objective-C桥接标头的新支持,这可以加快具有大型桥接标头的混合源项目的Debug配置版本(或其他非WMO生成)的速度。

TestFlight公共Beta链接。

通过TestFlight,可以轻松邀请用户测试您的应用程序并收集有价值的反馈,然后再在App Store上发布您的应用程序。 仅使用他们的电子邮件地址或公共邀请链接,您最多可以邀请10,000名测试人员。 之前: 获取UUID,然后共享一个测试版 在iTunesConnect中将用户添加为测试者并共享邀请。 现在: TestFlight使它更简单,因此请使用它。 优点- 您可以使用单个网址将构建共享给任何iPhone用户 通过Beta版获得反馈。 随时禁用链接。 链接有效期为90天 。 登录到iTunes Connect 在以下URL的帮助下 https://itunesconnect.apple.com/login 2.转到MyApps部分 3.选择要与测试人员共享的应用程序。 4.现在转到TestFlight部分 5.现在您将看到所有测试人员,在那里您将找到2个选项。 !)测试仪 !!)建立 现在选择构建。 点击后,您将看到以下弹出窗口 只需选择构建并启用它即可。 添加构建以进行测试后。 现在,您只需要启用公共链接。 并随时随地共享该链接。 如果要禁用该链接,只需在同一位置将其禁用。 URL将变为无效,没有人可以利用URL下载该应用程序。 因此,用户将不再可以访问此链接。 就是这样。 请随时添加评论(如有)。 随时通过Twitter @ jitendradeore5与我联系

从Swift 2迁移到Swift 3期间的警告

编译错误部分 解决此警告的一种方法是将@discardableResult添加到函数的声明中 //迅速2 扩展UIView { func addHighlightedAction(_ handler:()-> Void)-> HighlightedAction { 返回HighlightedAction(view:self,handler:handler)} } buttonView.addHighlightedAction {…} ——————————————- ——————– // Swift 3 扩展UIView { @discardableResult func addHighlightedAction(_ handler:@escaping()-> Void)-> HighlightedAction { 返回HighlightedAction(view:self,handler:handler)} } buttonView.addHighlightedAction {…} 另一种方法是在函数前面使用“ _ =” _ = imageBadge.autoAlignAxisToSuperviewAxis(…) 在String为nil的情况下添加默认值 //迅速2 print(“无法将\(tag.label)添加到空行。”)// Swift 3 print(“无法将\( tag.label ??“” )添加到空行。” //迅速2 让json =尝试JSON(数据:download.receivedData!),如果json == nil {..} —————————- […]

Swift与Objective-C在2019年

Objective-C由Brad Cox和Tom Love于1984年创建,是C的扩展。它在C语言中添加了SmallTalk样式消息传递和对象定向。 Objective-C的比较优势: 与C ++和Objective C ++的互操作性 动态功能,例如方法混乱 更好地支持编写二进制框架。 Objective-C的缺点: 由于Objective-C建立在C之上,因此缺少命名空间 。 Objective-C应用程序中的所有类都应该是全局唯一的。 因此,为了避免冲突,有一个在类名前加前缀的约定。 这就是为什么我们在Foundation Framework中为类提供了‘NS’前缀,在UIKit中为类提供了‘UI’前缀。 显式指针。 在nil对象上发送消息而不会崩溃的能力以及缺乏严格的键入导致了难以跟踪和修复的错误。 该语言在语法上冗长而复杂,但是鉴于它是一种相当古老的语言,因此可以预期。 Swift是一种于2014年发布的年轻语言。它采用现代语法和功能,旨在确保安全性和高性能。 Swift于2015年12月开源。 Swift的比较优势: 由于使用静态类型以及使用可选对象和可选链接,因此Swift更安全。 支持名称空间,清晰的可变性语法,功能模式和简洁的语法。 使用Playgrounds进行交互式开发。 对于新程序员来说,Swift更容易学习。Apple的官方语言指南是一个很好的资源。 Swift表现出色,正在服务器端应用程序中找到自己的位置。 克里斯·贝利 ( Chris Bailey)在Realm Academy上的一次演讲中解释了在服务器端使用Swift的优势,他指出了Swift与服务器和云上其他框架相比的优势。 据他介绍,Swift性能卓越,内存占用量低,这使其成为服务器端开发的理想选择。 Swift现已稳定,其ABI已锁定。 Swift标准库代码包含约42.5%的Swift代码。 标准库中使用的不同语言的拆分如下图所示。 此Swift代码可能是开发人员可以用来改进自己的Swift编码的最佳Swift代码。 在本演讲中,它涵盖得很好。 Swift的比较缺点: 编译时间更长。 没有直接使用C ++库的方法。 模块格式的稳定性仍未实现,对于希望将其代码共享为二进制框架的开发人员而言,这是必需的。 结论 Swift现已正式成为ABI的稳定用户,可以被认为是一种成熟的语言。 Swift中的未来更新不会破坏从现在开始在Swift 5中编写的当前代码。 苹果提供了Objective-C和Swift之间的出色互操作性,并且不会在不久的将来放弃对Objective-C的支持。 对于团队来说,最好将其Objective-C代码的一部分迁移到Swift,因为它现在是ABI Stable。 如果您正在开发一个二进制框架,我建议您等待Swift实现模块格式稳定性。 另外,如果您要使用C ++和Objective-C ++代码库或框架,那么您将需要使用Objective-C和Swift。 […]

有关保留计数的问题。

请在回复中写下您的答案 变量rollNumber(Program 1.0)的保留计数是多少? 2.变量rollNumber(程序1.1)的保留计数是多少? 2.1。 globalArray(程序1.1)的保留计数是多少? 3.地址变量(程序1.2)的保留计数是多少? 4. profileImage(程序1.3)的保留计数是多少? 5. yellowView(程序1.4)的保留计数是多少? 6.地址变量(程序1.5)的保留计数是多少?

iOS移动应用程序中的推送通知

+ Shubaham Jain iOS移动应用程序中的推送通知 对于iOS应用,您可以通过以下两种方式实施Firebase Cloud Messaging: 通过Firebase Cloud Messaging APNs界面接收最大4KB的基本推送通知消息。 在前台应用程序中向上游发送消息和/或接收高达4KB的下游数据有效载荷。 将Firebase添加到您的iOS项目 对于iOS客户端应用程序,您可以通过两种互补的方式实施Firebase Cloud Messaging: 通过Firebase Cloud Messaging APNs界面接收最大4KB的基本推送消息。 在前台应用程序中向上游发送消息和/或接收高达4KB的下游数据有效载荷。 将Firebase添加到您的iOS项目 先决条件 在开始之前,您需要在环境中进行一些设置: Xcode 8.0或更高版本 针对iOS 8或更高版本的Xcode项目 Swift项目必须使用Swift 3.0或更高版本 您的应用程序的捆绑标识符 CocoaPods 1.2.0或更高版本 对于云消息传递: 物理iOS设备 您的Apple Developer帐户的Apple Push Notification身份验证密钥 在Xcode中,在“ 应用”>“功能”中启用“推送通知” 在Mac机器上安装Cocoapods的步骤: 步骤1:如果您的计算机上未安装cocoapods,请首先在终端sudo gem install cocoapods上使用以下命令将其安装在计算机上 步骤2:将汇出至 导出PATH = $ PATH:/ Library / Ruby / […]

iOS popovers作为菜单教程

我正在写一个iPad应用程序并且对于目标C来说是一个新手。我目前正在尝试使用popover作为视图控制器中的菜单。 我理解如何设置弹出窗口并在其中有一个tableview供用户从中选择项目。 但是,我不知道如何将信息传递回容纳弹出窗口的容器视图。 didSelectRowAtIndexPath将在UITableViewController中调用,它可能位于popover视图控制器中。 任何人都可以指出我如何将这些信息带回容器的正确方向? 提前致谢!

从iOS 4过渡到iOS 5 + ARC期间的可变问题:“将非本地对象的地址传递给_autoreleasing参数以进行回写”

我在iOS 4中执行此操作的“旧”方法是在头文件中声明对象并传递对象以进行回写以处理错误参数。 NSError *error; 由于我的知识有限,我无法在iOS5中继续使用此模式并收到错误: “将非本地对象的地址传递给_autoreleasing参数以进行回写” //Instantiate an instance of AVAudioSession object AVAudioSession *audioSession = [AVAudioSession sharedInstance]; //Setup playback and Record [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&error ]; 我的临时解决方案是这样做: NSError *theError = nil; //Instanciste an instance of AVAudioSession object AVAudioSession *audioSession = [AVAudioSession sharedInstance]; //Setup playback and Record [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&theError]; //Activate session [audioSession setActive:YES error:&theError]; 这很烦人,因为我每次需要在Xcode中使用它时都要创建这个本地对象。 我的问题是:在新的ARC范例中有没有更好的方法呢? […]

UIViewAutoresizingNone:轮换后resize

我有一个简单的IPAD结构,AppDelegate包含来自viewController的视图: – (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { ClockVC *clockVC = [[ClockVC alloc]init]; clockVC.view.frame = CGRectMake(100, 100, clockVC.view.bounds.size.width, clockVC.view.bounds.size.height); [self.window addSubview:clockVC.view]; [self.window makeKeyAndVisible]; return YES; } clockVC有一个由此代码定义的viewDidLoad: – (void)viewDidLoad { [super viewDidLoad]; self.view.autoresizingMask = UIViewAutoresizingNone; self.view.autoresizesSubviews = UIViewAutoresizingNone; } clockVC的界限由IB定义,并在应用中覆盖:didFinishLaunching … Width和Height分别为200和150。 ClockVC实现了一步自动旋转的方法:/ / Override to allow orientations other than the default portrait orientation. – (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation […]

使用iOS NSRegularExpression进行Ruby样式的字符串插值

我正在尝试为我的应用中的模型生成HTML输出。 这将有效地通过模型中的相关值填充HTML文件中的各个位置。 我原本只是将HTML模板作为格式化字符串,但如果稍后在布局或任何事情上发生任何变化,这将使得将值的顺序与它们在模板中出现的顺序相匹配变得非常麻烦和繁琐。 。 相反,我正在尝试做的是运行一种Ruby样式的文件字符串插值。 无论我想从模型中获取值,我都会将我想要的模型属性的名称设置为: #{key.path} 。 然后,我试图使用以下正则表达式来处理它: @”#{([^}]+)}” 。 要处理这个,我使用以下设置: NSString *processedTemplate = [regex stringByReplacingMatchesInString:template options:0 range:NSMakeRange(0, template.length) withTemplate:[self valueForKeyPath:@”$1″]]; 但是,当我运行它时,我收到错误: *** Terminating app due to uncaught exception ‘NSUnknownKeyException’, reason: ‘[ valueForUndefinedKey:]: this class is not key value coding-compliant for the key $1.’ 我期望的是我可以使用正则表达式匹配并使用它来获取我的模型中符合键值编码的值。 但是,这显然不能像我使用它那样工作。 另外,我认为我正在使用这个,但是当我运行它来替换withTemplate:@”$1″我得到了NULL。 所以,我尝试使用: NSString *processedTemplate = [template stringByReplacingOccurrencesOfString:@”#{([^}]+)}” withString:@”$1″ […]