Tag: 架构

iOS Core Data Architecture提示

我只想获得构build我的第一个核心数据应用程序的最佳方式,以及主要对象和交互所需的一些指针。 数据远程存储,我将需要通过HTTP访问它,它将以JSON格式进行响应。 我想使用核心数据caching在设备上。 每一天都会有新的数据在服务器上,所以我需要访问它并相应地更新模型。 有没有我可以用来帮助我的SDK类,还是我要手动滚动它? 我想我正在寻找一个模型控制器,我打电话来获取数据,它会返回核心数据caching的数据,也许后台调用Web服务获取最新的数据,然后通知有新的看法数据。 当我从JSON格式的Web服务获取数据时 – 我将需要将其映射到ManagedObjects,并添加到我的核心数据上下文中。

苹果Mach-O链接器错误(20) – 架构armv7的未定义符号

我在添加“libPusher-combined.a”及其头文件后,在“Other Linker Flags”构build设置中添加“-all_load”后,收到了这些错误。 我完全按照“-all_load”(在“添加到您的iOS项目中”中的“使用预编译的静态库”部分)中的指示进行操作 ,但是最终我得到了20个Mach-O Linker错误。 /谁能帮我一下吗? 这里是错误: Undefined symbols for architecture armv7: "_utf8_nextCharSafeBody", referenced from: -[SRWebSocket _pumpScanner] in libPusher-combined.a(SRWebSocket.o) "_SCError", referenced from: -[Reachability startNotifier] in libPusher-combined.a(Reachability.o) "_utf8_countTrailBytes", referenced from: -[SRWebSocket _pumpScanner] in libPusher-combined.a(SRWebSocket.o) "_SCNetworkReachabilitySetDispatchQueue", referenced from: -[Reachability startNotifier] in libPusher-combined.a(Reachability.o) -[Reachability stopNotifier] in libPusher-combined.a(Reachability.o) "_kCFHTTPVersion1_1", referenced from: -[SRWebSocket didConnect] in libPusher-combined.a(SRWebSocket.o) "_CFHTTPMessageIsHeaderComplete", referenced from: […]

Xcode 6错误 – “缺less必要的架构i386”当build设iOS模拟器

我创build了一个自定义的Objective-C框架。 我想将其导入到任何给定的iOS项目中,并在iOS模拟器和实际设备上使用其提供的function。 要导入框架,我使用应用程序目标中的Build Phases> Link Binary With Libraries设置链接它。 然后我可以用下面的语句把它导入到我的一个类中: #import <CustomFramework/CustomFramework.h> 我可以实例化我的框架的类,但是当我尝试在设备上运行我的项目时,出现以下错误消息: dyld: Library not loaded: @rpath/CustomFramework.framework/CustomFramework Referenced from: /var/mobile/Applications/A61E882D-481A-4C0B-B4FD-69F5D24968BF/TestApp.app/TestApp Reason: image not found 如果我尝试在模拟器上运行它,我会得到一个不同的错误信息: ld: warning: ignoring file /Users/user/Desktop/CustomFramework.framework/CustomFramework, missing required architecture i386 in file /Users/user/Desktop/CustomFramework.framework/CustomFramework (2 slices) Undefined symbols for architecture i386: "_OBJC_CLASS_$_CustomFramework", referenced from: objc-class-ref in AppDelegate.o ld: symbol(s) not found for […]

在iOS和OS X中获取系统范围通知的状态

我正在尝试写一个代码来处理iOS上的开/关屏幕(你可以看看类似的问题讨论这个问题)。 我为这个问题提供了OSX标签,因为OSX具有相同的系统范围通知function。 下面描述的问题是inheritance到通知设施(与iOS或OSX)。 有一个众所周知的方法来注册系统范围的通知com.apple.springboard.hasBlankedScreen在屏幕closures或打开时接收通知。 仅供参考(以下是用于注册系统范围通知的API): notify_post,notify_check_ notify_get_state和朋友 CFNotificationCenterPostNotification,CFNotificationCenterAddObserver和朋友 (内部使用notify_post等) 但是,这种方法存在两个相互关联的问题: 对于两个屏幕closures和通知的通知具有相同的名称(com.apple.springboard.hasBlankedScreen) 观察者没有收到状态作为通知的一部分。 因此,我们需要实现一些不同的屏幕打开和closures的解决scheme(因为相同的通知callback将被调用,并且没有参数将具有状态)。 一般来说,国家与通知callback脱钩的核心问题。 我看不出如何处理这个优雅。 我提出了两个简单的方法(每个都是有缺陷的)。 寻找另一种方法或改进这种方法的想法。 计数解决scheme 我们可以实施一个计数器来统计我们已经收到了多less通知,根据这些信息我们将知道是否通知打开或closures屏幕(基于我们的柜台的奇怪)。 但是,它有两个缺点: 1)在这种情况下,如果系统(由于devise时间的原因未知)将发送具有相同名称的附加通知,我们的逻辑将被拧紧,因为它会打破奇怪的检查。 2)另外,我们需要正确设置初始状态。 所以在代码中的某处我们会有这样的东西: counter = getInitialState(); registerForNotification(); 在这种情况下,我们有一个竞争条件。 如果系统会在getInitialState()之后发送通知并改变状态,但是在registerForNotification()之前,我们将以错误的计数器值结束。 如果我们会做以下代码: registerForNotification(); counter = getInitialState(); 在这种情况下,我们有另一种竞争条件。 如果系统发送通知并在我们做了registerForNotification()之后,但在getInitialState()之前改变状态,我们将得到一个计数器,将进入通知callback,并增加一个计数器(这会使其错误)。 确定通知收到解决scheme时的状态 在这种情况下,我们不存储任何计数器,而是在通知callback中使用API​​ notify_get_state来获取当前状态。 这有它自己的问题: 1)asynchronous传送到应用程序的通知。 所以,如果closures屏幕的速度非常快,您可以在屏幕已经打开的情况下收到两个通知。 所以,notify_check会得到一个当前的状态(相对于发送通知时的状态)。 因此,当应用程序将在通知callback中使用notify_get_state时,将确定有两个通知“屏幕已打开”,而不是一个通知“屏幕已closures”,另一个“屏幕已打开”。 PS一般来说,所有描述的问题都不是特定于屏幕开/关的情况。 它们对于具有独特状态并以相同的通知名称发送的任何系统范围的通知都是实际的。 更新1 我没有准确地testing开启/closures屏幕的情况,并且获得了notify_get_state()的相同结果。 然而,当我收到两个通知com.apple.springboard.lockstate (通过CFNotificationCenterAddObserver订阅)时,我有类似的情况,我使用另一个API来获取当前的设备locking状态,并收到两个通知相同的值。 所以这只是我的假设,notify_get_state也会返回相同的值。 不过,我认为这是受过教育的猜测。 notify_get_state的input参数对于两个调用是相同的(它不会改变)。 我不认为系统存储应该由notify_get_state返回的状态的FIFO队列。

清洁架构 – Robert Martin – 如何连接用例

我正在尝试实施Robert Martin所描述的清洁架构 。 更具体地说,我使用的是干净架构的iOS版本的VIPER 。 我有这个问题如下: 用户开始查看带有地点(地图)的地图。 如果他点击一个button,一个别针被丢弃,并被带到另一个视图来创build(或编辑,如果它是一个现有的针脚点击)的地方(或取消)。 在另一个视图中,用户可以编辑地点的信息,然后点击“返回”或“完成”(或“编辑”)。 如果他点击“完成”,则PlaceDetailsViewController向PlaceDetailsPresenter发送一条消息,其中包含地点信息,PlaceDetailsPresenter使用CreatePlaceInteractor创build该地点。 这个交互者返回用​​于标识地点的GUID。 如果用户在创build地点之前点击回来,他会回到地图上,并且丢弃的针脚上升(因为它没有GUID,这是一个新的地方,并消失)。 如果他在创build之后再次点击,则该引脚停留在那里(因为它应该有一个GUID)。 我应该如何连接所有的地方信息(包括GUID)在哪里存储? 澄清一点点: 谁应该通知MapPresenter销钉停留在那里或者消失? 它是PlaceDetailsPresenter还是应该将这些信息传递给PlaceDetailsWireframe – > MapWireframe – > MapPresenter – > MapView? 在返回之前,这个GUID应该存储在PlaceDetailsPresenter还是PlaceDetailsViewController中? 现在这就是我所拥有的: 编辑: 基本上我认为问题在于,VIPER来自Robert Martin的Clean Architecture,他来自Web(Rails)背景,所以他对于状态没有太多的了解(或者在谈话中没有说明)。 这主要是我的问题,应该在哪里存储状态,不同的模块应该如何通信,应该通过线框,数据库还是通过交互器,或者通过主持人互相通信,如https:/ / /github.com/objcio/issue-13-viper-swift 。

使用phonegap v 2.9构buildXCode 4.6发行版的存档失败

这似乎是一个反复出现的现象。 我看到了一些先前的问题,解决scheme是删除armv6,然后归档工作。 当然,armv6已经不在了。 所以,现在,build设与电stream, Xcode 4.6.3 Phonegap 2.9。 是的,该应用程序在iPhone,iPad和模拟器上正常工作。 我在创build归档步骤结束时收到此消息: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch armv7s -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk -L/Users/peeq/Library/Developer/Xcode/DerivedData/peeq-gylybvwifdxjmtajtbvdsdpjcvkl/Build/Intermediates/ArchiveIntermediates/peeq/BuildProductsPath/Release-iphoneos -F/Users/peeq/Library/Developer/Xcode/DerivedData/peeq-gylybvwifdxjmtajtbvdsdpjcvkl/Build/Intermediates/ArchiveIntermediates/peeq/BuildProductsPath/Release-iphoneos -filelist /Users/peeq/Library/Developer/Xcode/DerivedData/peeq-gylybvwifdxjmtajtbvdsdpjcvkl/Build/Intermediates/ArchiveIntermediates/peeq/IntermediateBuildFilesPath/peeq.build/Release-iphoneos/peeq.build/Objects-normal/armv7s/peeq.LinkFileList -dead_strip -weak_framework CoreFoundation -weak_framework UIKit -weak_framework AVFoundation -weak_framework CoreMedia -weak-lSystem -force_load /Users/peeq/Library/Developer/Xcode/DerivedData/peeq-gylybvwifdxjmtajtbvdsdpjcvkl/Build/Intermediates/ArchiveIntermediates/peeq/InstallationBuildProductsLocation/Applications/libCordova.a -ObjC -fobjc-link-runtime -miphoneos-version-min=5.0 -framework CoreLocation -framework ImageIO -framework OpenAL -framework AssetsLibrary /Users/peeq/Library/Developer/Xcode/DerivedData/peeq-gylybvwifdxjmtajtbvdsdpjcvkl/Build/Intermediates/ArchiveIntermediates/peeq/BuildProductsPath/Release-iphoneos/libCordova.a -framework Foundation -weak_framework UIKit -framework CoreGraphics -framework AddressBook -framework AddressBookUI -framework AudioToolbox […]