Tag: 目标C

为什么我们设置委托为零dealloc如果对象将被销毁呢?

-(void) scrollViewDidScroll:(UIScrollView *)scrollView { PO(NSStringFromCGPoint(self.tableView.contentOffset)); PO(NSStringFromUIEdgeInsets(self.tableView.contentInset)); while(false); } -(void)dealloc { PO(NSStringFromClass([self class])); PO(@"Deallocated"); self.tableView.delegate=nil; } 在这里,我需要设置self.tableView.delegate =零,以避免错误。 我知道,从我以前的问题,self.tableView.delegate不会自动成为n当委托被销毁。 这是因为委托types是分配引用而不是弱引用。 但是,self.tableView呢? 唯一强烈引用self.tableView的是superview,它拥有self和selfsef。 所以当self被销毁的时候,self.tableView也应该被销毁,这意味着self.tableView.delegate也会被删除。 那么为什么我需要设置self.tableView.delegate=nil ;

如何在使用图像创buildvideo的同时在图像更改上添加animation

我有一个图像arrays,我想通过连续播放这些图像来创buildvideo。我想在图像变化时添加不同types的animation。 build议我使用Cocoa框架在Objective-C中实现此function的一些方法或任何解决scheme。 这里是制作图像video的工作代码,但请build议我们如何在制作video的同时制作animation图像: -(void)createVideoFromImages:(NSString *) path withSize:(CGSize) size { NSError *error = nil; AVAssetWriter *videoWriter = [[AVAssetWriter alloc] initWithURL: [NSURL fileURLWithPath:path] fileType:AVFileTypeMPEG4 error:&error]; NSParameterAssert(videoWriter); NSDictionary *videoSettings = [NSDictionary dictionaryWithObjectsAndKeys: AVVideoCodecH264, AVVideoCodecKey, [NSNumber numberWithInt:size.width], AVVideoWidthKey, [NSNumber numberWithInt:size.height], AVVideoHeightKey, nil]; AVAssetWriterInput* videoWriterInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo outputSettings:videoSettings]; AVAssetWriterInputPixelBufferAdaptor *adaptor = [AVAssetWriterInputPixelBufferAdaptor assetWriterInputPixelBufferAdaptorWithAssetWriterInput:videoWriterInput sourcePixelBufferAttributes:nil]; NSParameterAssert(videoWriterInput); NSParameterAssert([videoWriter canAddInput:videoWriterInput]); videoWriterInput.expectsMediaDataInRealTime = […]

Apple Watch的预处理器macros?

我正在研究苹果的李斯特(苹果手表,iOS和OS X)示例。 该示例对iOS和OS X执行testing: #import <TargetConditionals.h> #if (TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR) @import ListerKit; #elif TARGET_OS_MAC @import ListerKitOSX; #endif 但是,没有对TARGET_OS_WATCH或类似的testing。 在TargetConditionals.h清理watch不会造成任何影响: $ cat /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer /SDKs/iPhoneOS7.1.sdk/usr/include/TargetConditionals.h | grep -i watch $ 从TargetConditionals.h ,我知道有: 这些条件指定生成的代码将在哪个操作系统中执行 跑。 MAC / WIN32 / UNIX条件是相互排斥的。 EMBEDDED / IPHONE 条件是TARGET_OS_MAC的变体。 TARGET_OS_MAC – 生成代码将在Mac OS下运行 TARGET_OS_WIN32 – 生成的代码将在32位Windows下运行 TARGET_OS_UNIX – 生成代码将在一些非Mac OS X unix下运行 TARGET_OS_EMBEDDED […]

本地服务器上的ApprtcDemo在浏览器和Android之间工作,但不在iOS上

我正在尝试使用ApprtcDemo在iPhone和浏览器之间使用webrtc进行调用 一切工作正常通过apprtc.appspot.com。 但是当我在我的服务器上运行应用程序时,我能够在浏览器之间进行调用,并且在这篇文章的帮助下,我在浏览器之间调用了android。 我不能让iPhone和浏览器之间的通话… 修改代码: 在APPRTCAppClient.m中: //NSString *path = [NSString stringWithFormat:@"https:%@", [url resourceSpecifier]]; NSString *path = [NSString stringWithFormat:@"http:%@", [url resourceSpecifier]]; //NSString *url = [NSString stringWithFormat:@"%@/%@", self.baseURL, self.postMessageUrl]; NSString *url = [NSString stringWithFormat:@"http://xxx.xx.x.xx:9090%@", self.postMessageUrl]; //[request addValue:@"https://apprtc.appspot.com" forHTTPHeaderField:@"origin"]; [request addValue:@"http://xxx.xx.x.xx:9090" forHTTPHeaderField:@"origin"]; 在APPRTCViewController.m中: //NSString *url = [NSString stringWithFormat:@"apprtc://apprtc.appspot.com/?r=%@", room]; NSString *url = [NSString stringWithFormat:@"apprtc://xxx.xx.x.xx:9090/?r=%@", room]; 在ios_channel.html中: //<script type="text/javascript" […]

NSString cString已弃用。 有什么select?

我还有一个新手问题。 我写了一段代码,将NSString转换为NSMutableData,以模拟webService结果。 但事实certificate,cString已被弃用。 你能帮我replace吗? 这是我的代码。 NSString *testXMLDataString = @"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" etc…. "</SOAP-ENV:Envelope>"; //Replace webData Received from the web service with the test Data NSMutableData *testXMLData = [NSMutableData dataWithBytes:[testXMLDataString cString] length:[testXMLDataString length]]; [webData setData:testXMLData];

视觉工作室的xamarin不显示模拟器列表

我对xamarin很新,试图运行一个示例应用程序(IOS)。 但Visual Studio说: "Please select a valid device before running the application" 我知道在IOS工具栏上,应该有选项来select模拟的设备(支持iOS设备的列表,如iphone 6,5等),但我不明白。 编辑:更准确地说,IOS工具栏上没有显示目标IOS设备

为什么最终的二进制文件的大小比静态库的大小要小得多呢?

这是一个iOS问题。 我构build了一个静态库(iOS中的框架 ),然后包含在一个应用程序中。 结果二进制(500kb)的大小小于静态库(6mb)的大小。 这个怎么用? 我对静态库的理解是静态库包含在最终的二进制文件中

NSData dataWithContentsOfFile返回null

我正在尝试使用此代码获取存在于我的xcode资源中的JSON文件 -(void)readJsonFiles { NSString *str=[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"classes.json"]; NSLog(@"Path: %@", str); NSData *fileData = [NSData dataWithContentsOfFile:str]; NSLog(@"Data: %@", fileData); SBJsonParser *parser = [[SBJsonParser alloc] init] ; NSDictionary *jsonObject = [parser objectWithData:fileData]; NSLog(@"%@", jsonObject); } path返回这个文件path的链接 /Users/astutesol/Library/Application Support/iPhone Simulator/6.0/Applications/A4E1145C-500C-4570-AF31-9E614FDEADE4/The Gym Factory.app/classes.json 但是当我loginfileData它返回我null 。 我不知道我在做什么错误。

在导入之前对框架进行条件编译检查

我正在寻找一种方法来检查一个框架是否存在和/或如果它的类定义,在导入和使用该框架之前。 具体来说,该框架是资产库。 目前,我可以用Core Data框架来做这件事,因为该框架有一个名为CoreDataDefines.h的文件,它提供了一个预处理指令_COREDATADEFINES_H。 这允许我简单地检查这样的定义: #ifdef _COREDATADEFINES_H #import <CoreData/CoreData.h> // do something with Core Data #else // do something without using Core Data #endif 不幸的是,Assets Library没有提供明确的定义头文件,所以我正在寻找一种方法来编写我自己的#define语句,在导入之前可以检查框架的存在,就像我为上面的Core Data所做的一样。 我试过这个: #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 40000 // import assets library if defined ! #define ASSETSLIBRARY_DEFINE (NSClassFromString(@"ALAsset") != nil) #if ASSETSLIBRARY_DEFINE #import <AssetsLibrary/AssetsLibrary.h> #endif #endif …但没有运气。 编译器告诉我“令牌不是预处理器子expression式中的有效二进制运算符”。 任何帮助总是非常感激。

为具有多个目标和不同平台的项目编写Podfile

我正在准备一个支持OS X和iOS的Pod。 我的pod有自己的一些依赖关系,这些依赖关系是在podspec文件中定义的,所以我使用Podfile来pipe理我用来开发pod和运行testing的项目的依赖关系。 我正在使用CocoaPods 0.33.1。 我有四个目标: MFDynamic.iOS (iOS静态库) MFDynamic.iOS.Tests (iOStesting包) MFDynamic.Mac (Mac框架) MFDynamic.Mac.Tests (Mactesting包) 我想要的行为是这样的: 指定每个目标的平台(因为有iOS和OS X目标)。 在非testing目标中包含podspec依赖关系作为窗格。 能够指定Kiwi/XCTest作为我的testing目标的依赖项。 但是,无论我尝试过多less次,我都无法编写一个可用的Podfile。 运行pod install永远不会将CocoaPods的构build阶段添加到我的目标中,也不会将相应的xcconfig文件添加到项目中。 CocoaPods不会警告Podfile中的任何错误。 这是我最近失败的尝试: target 'MFDynamic.iOS' do platform :ios, '6.1' podspec :path => '../MFDynamic.podspec' end target 'MFDynamic.Mac' do platform :osx, '10.7' podspec :path => '../MFDynamic.podspec' end target 'MFDynamic.iOS.Tests' do platform :ios, '6.1' pod 'Kiwi/XCTest', '~> […]