小编Rob*_*ert的帖子

Objective C中方法调配的危险是什么?

我听说有人说方法调整是一种危险的做法.即使是名字调整也会让人觉得这有点像作弊.

方法Swizzling正在修改映射,以便调用选择器A实际上将调用实现B.这样做的一个用途是扩展封闭源类的行为.

我们能否将风险正式化,以便任何决定是否使用调酒的人都可以做出明智的决定是否值得他们尝试做什么.

例如

  • 命名冲突:如果该类稍后扩展其功能以包括您添加的方法名称,则会导致大量问题.通过明智地命名混合方法来降低风险.

objective-c swizzling ios

232
推荐指数
5
解决办法
4万
查看次数

ConnectionTimeout与SocketTimeout

我正在使用我正在使用的库的问题.它可能是图书馆,也可能是我使用它错了!

基本上,当我这样做时(以​​毫秒为单位的超时)

_ignitedHttp.setConnectionTimeout(1);  // v short
_ignitedHttp.setSocketTimeout(60000);  // 60 seconds
Run Code Online (Sandbox Code Playgroud)

没有生成超时异常并且它正常工作,但是,当我执行以下操作时,

_ignitedHttp.setConnectionTimeout(60000);  // 60 seconds
_ignitedHttp.setSocketTimeout(1);          // v short
Run Code Online (Sandbox Code Playgroud)

我得到一个Socket Exception.

所以,我的问题是为什么我不能模拟连接异常?我是否误解了套接字和连接超时之间的区别?图书馆在这里(尚未正式发布).

java android tcp httpconnection

120
推荐指数
2
解决办法
11万
查看次数

即使图像较小,如何使UITableViewCell的ImageView成为固定大小

我有一堆用于细胞图像视图的图像,它们都不超过50x50.例如40x50,50x32,20x37 .....

当我加载表格视图时,文本不会排列,因为图像的宽度会有所不同.此外,我希望小图像出现在中心而不是左侧.

这是我在'cellForRowAtIndexPath'方法中尝试的代码

cell.imageView.autoresizingMask = ( UIViewAutoresizingNone );
cell.imageView.autoresizesSubviews = NO;
cell.imageView.contentMode = UIViewContentModeCenter;
cell.imageView.bounds = CGRectMake(0, 0, 50, 50);
cell.imageView.frame = CGRectMake(0, 0, 50, 50);
cell.imageView.image = [UIImage imageWithData: imageData];
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我尝试了一些东西,但它们都没有用.

iphone objective-c uitableview uikit uiimageview

102
推荐指数
7
解决办法
12万
查看次数

应用源何时需要包含在测试目标中?

在一个新项目中,我有这个简单的测试

#import <XCTest/XCTest.h>
#import "ViewController.h"

@interface ViewControllerTests : XCTestCase
@end

@implementation ViewControllerTests

- (void)testExample
{ 
    // Using a class that is not in the test target.
    ViewController * viewController = [[ViewController alloc] init];
    XCTAssertNotNil(viewController, @"");
}

@end
Run Code Online (Sandbox Code Playgroud)

ViewController.h 不是测试目标的一部分,但它编译并运行测试没有任何问题.

在此输入图像描述

我认为这是因为应用程序首先构建(作为依赖)然后是测试.链接器然后找出ViewController类是什么.

但是,在较旧的项目中,使用完全相同的测试和ViewController文件,构建在链接器阶段失败:

Undefined symbols for architecture i386:
"_OBJC_CLASS_$_ViewController", referenced from:
  objc-class-ref in ViewControllerTests.o
Run Code Online (Sandbox Code Playgroud)

即使创建了新的XCTest单元测试目标,也会发生此链接器错误.

为了解决这个问题,可以在应用程序和测试目标中包含源(勾选上图中的两个框).这会在模拟器的系统日志中导致重复符号的构建警告(打开模拟器并按cmd- /查看):

Class ViewController is implemented in both 
[...]/iPhone Simulator/ [...] /MyApp.app/MyApp and 
[...]/Debug-iphonesimulator/LogicTests.octest/LogicTests. 
One of the two will be used. Which one is undefined.
Run Code Online (Sandbox Code Playgroud)

这些警告偶尔会导致以下示例说明的问题: …

xcode unit-testing objective-c ios xctest

69
推荐指数
4
解决办法
2万
查看次数

如何在swift脚本中运行终端命令?(例如xcodebuild)

我想用swift替换我的CI bash脚本.我无法弄清楚如何调用普通的终端命令,如lsxcodebuild

#!/usr/bin/env xcrun swift

import Foundation // Works
println("Test") // Works
ls // Fails
xcodebuild -workspace myApp.xcworkspace // Fails
Run Code Online (Sandbox Code Playgroud)
$ ./script.swift
./script.swift:5:1: error: use of unresolved identifier 'ls'
ls // Fails
^
... etc ....
Run Code Online (Sandbox Code Playgroud)

bash shell xcodebuild swift

64
推荐指数
9
解决办法
6万
查看次数

导致此Crashlytics编译警告的原因是什么?(在'...'处自动链接提供的'...'框架链接器选项不是dylib)

编译我的主目标(不是像这里的测试目标)会产生以下错误:

ld: warning: Auto-Linking supplied 
   '~/Documents/my_app/MyApp/Crashlytics.framework/Crashlytics', 
framework linker option at 
    ~/Documents/my_app/MyApp/Crashlytics.framework/Crashlytics 
is not a dylib
Run Code Online (Sandbox Code Playgroud)

从这个构建命令:

Ld /Build/Products/Debug-iphonesimulator/MyApp.app/MyApp正常i386 cd~/Documents/my_app/MyApp export IPHONEOS_DEPLOYMENT_TARGET = 8.0 export PATH ="/ Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform /开发人员/ usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/ usr/bin:/ bin:/ usr/sbin:/ sbin"/Applications/Xcode.app/Contents/Developer/Toolchains/ XcodeDefault.xctoolchain/usr/bin/clang -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.2.sdk -L~/Library/Developer/Xcode/DerivedData/MyApp-dbmrsjmskpqxmnegayfzfxgcwvsm/Build/Products/Debug-iphonesimulator -F~/Library/Developer/Xcode/DerivedData/MyApp-dbmrsjmskpqxmnegayfzfxgcwvsm/Build/Products/Debug-iphonesimulator -F~/Documents/my_app/MyApp -filelist~/Library /Developer/Xcode/DerivedData/MyApp-dbmrsjmskpqxmnegayfzfxgcwvsm/Build/Intermediates/MyApp.build/Debug-iphonesimulator/MyApp.build/Objects-normal/i386/MyApp.LinkFileList -Xlin ker -rpath -Xlinker @ executable_path/Frameworks -Xlinker -objc_abi_version -Xlinker 2 -ObjC -lPods-CocoaLumberjack -lPods-Mantle -framework CFNetwork -framework Foundation-framework Security -framework SystemConfiguration -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min = 8.0 -framework CoreGraphics -lPods -framework MapKit -framework Fabric -lPods-MyApp …

xcode ios crashlytics

53
推荐指数
3
解决办法
2万
查看次数

使用HTTP流水线的缺点是什么?

WWDC 2012会议706-网络最佳实践解释了HTTP流水线技术.

  • 默认情况下,在iOS上禁用
  • 在演讲中,它将其描述为一场巨大的表演胜利.

你为什么不想用呢?

流水线

http http-pipelining

47
推荐指数
1
解决办法
1万
查看次数

CoreData属性的Indexed属性有什么作用?

我有一个32位哈希值的核心数据模型.我需要快速查找特定的哈希值.我应该使用索引属性吗?我不知道它做了什么,文档没有帮助(我在错误的地方找?)

那么索引做什么呢?

模型

在此输入图像描述

indexing core-data

40
推荐指数
2
解决办法
2万
查看次数

如何将UIPopoverView显示为地图视图的注释?总览

在点击一个图钉时,在iPad上的地图应用程序中,您可以使用"i"而不是公开指示符获得正常注释.进一步点击"i"会显示这样的弹出视图控制器.

地图popover示例

有没有办法轻松实现这一目标?

ipad ios

35
推荐指数
1
解决办法
2万
查看次数

如何在使用jQuery加载页面之前隐藏HTML元素

我有一些显示或隐藏div的JQuery代码.

$("div#extraControls").show();   // OR .hide()
Run Code Online (Sandbox Code Playgroud)

我最初想要div不可见所以我用过:

$(document).ready(function() {
    $("div#extraControls").hide();
});
Run Code Online (Sandbox Code Playgroud)

但是,在浏览器上,内容在消失之前加载一秒钟,这不是我想要的.

如何在页面加载之前设置隐藏元素,同时保持显示的能力使用脚本动态隐藏它?

html jquery

30
推荐指数
2
解决办法
8万
查看次数