小编Paw*_*Rai的帖子

@properties(MRC)的显式getter/setter

我在2012年中期开始编写Objective-C语言编程,当时ARC取代MRC作为一般做法,后者几乎不需要学习.

现在,我正在尝试了解MRC的一些基础知识,以加深我对Objective-C中的内存管理的了解.

我现在感兴趣的是如何用手明确地getters/setters声明@properties.

到目前为止,我发现的唯一合理的例子来自Apple的"高级内存管理编程指南":

@interface Counter : NSObject {
    NSNumber *_count;
}
@property (nonatomic, retain) NSNumber *count;
@end;

- (NSNumber *)count {
    return _count;
}

- (void)setCount:(NSNumber *)newCount {
    [newCount retain];

    [_count release];

    _count = newCount;
}
Run Code Online (Sandbox Code Playgroud)

我的猜测是,为了(非原子,复制),我应该写类似的东西:

- (NSNumber *)count {
    return _count;
}

- (void)setCount:(NSNumber *)newCount {
    [_count release];

    _count = [newCount copy];
}
Run Code Online (Sandbox Code Playgroud)

所以问题是我不确定的其他组合:

我很感谢能够向我展示如何使用手动引用计数(MRC)为以下@property声明编写显式getter/setter的示例:

1. @property (nonatomic, retain) NSNumber *count;
2. @property (nonatomic, copy) NSNumber *count;
3. @property (atomic, retain) NSNumber *count; …
Run Code Online (Sandbox Code Playgroud)

memory-management objective-c

7
推荐指数
2
解决办法
3276
查看次数

在屏幕截图期间,拉伸的UIView背景被截断

所以,我正在截取一个子类UIView的截图,我将其保存到设备的照片流中.

问题:

问题是我用来resizableImageWithCapInsets为我的UIView添加一个拉伸的背景,但是这个背景在右侧被截断,我不明白为什么.如果有人可以帮助我,我将非常感激.

这是应用程序中的图像(左)和将其保存到照片流中后的样子(右)

我通过以下方式将拉伸的背景添加到我的UIView:

[diagramBase addSubview:[self addTileBackgroundOfSize:diagramBase.frame 
andType:@"ipad_diagram_border.png"]];
Run Code Online (Sandbox Code Playgroud)

哪个调用此方法:

- (UIImageView *) addTileBackgroundOfSize:(CGRect)frame 
andType:(NSString *)type
{
frame.origin.x = 0.0f;
frame.origin.y = 0.0f;

UIImageView *backgroundView = [[UIImageView alloc] initWithFrame:frame];
UIImage *image = [UIImage imageNamed:type];
UIEdgeInsets insets = UIEdgeInsetsMake(10.0f, 10.0f, 10.0f, 10.0f);
UIImage *backgroundImage = [image resizableImageWithCapInsets:insets];
backgroundView.image = backgroundImage;

return backgroundView;
}
Run Code Online (Sandbox Code Playgroud)

实际的printcreen是用这个方法完成的(RINDiagramView是我的子类UIView的名字,我正在截取它的截图).旋转是在那里,因为我需要在保存时旋转图像,但我注释掉那部分,这不是背景的行为怪异.

- (UIImage *) createSnapshotOfView:(RINDiagram *) view
{
CGRect rect = [view bounds];
rect.size.height = rect.size.height - 81.0f;
UIGraphicsBeginImageContextWithOptions(rect.size, YES, 0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
[view.layer renderInContext:context]; …
Run Code Online (Sandbox Code Playgroud)

objective-c uiview ipad ios cgcontextref

7
推荐指数
1
解决办法
1018
查看次数

Objective C 从 iOS 设备上的 wifi 点获取 MAC 地址,但地址中没有看到零

我使用函数并看到

BSSID = "d4:ca:6d:d4:e:89";
SSID = "ExtremeFitness_FreeInternet";
SSIDDATA = <45787472 656d6546 69746e65 73735f46 72656549 6e746572 6e6574>;
Run Code Online (Sandbox Code Playgroud)

但来自 wifi 指针的 mac 地址 d4:ca:6d:d4:0e:89

之后,我将当前的 wifi bssid 与数据库中的 mac 地址进行比较,比较 NSString

为什么我在这段代码中看不到 0 ?

+(NSString *) getMac{

CFArrayRef myArray = CNCopySupportedInterfaces();
CFDictionaryRef captiveNetWork = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0));
//NSLog(@"Connected at : %@", captiveNetWork);
NSDictionary *myDictionnary = (__bridge NSDictionary *)captiveNetWork;
NSString *bssid = [myDictionnary objectForKey:@"BSSID"];

if (bssid.length == 0) {

    return @"";
}

return bssid;
}

-(void)compareMacAddress{

for (int i = 0; i < _clubs.count; …
Run Code Online (Sandbox Code Playgroud)

xcode objective-c ios

5
推荐指数
1
解决办法
1716
查看次数

在iOS中使用Realm进行单元测试

我按照Realm网站上的指南进行操作,但我的测试仍然会产生不同的结果,具体取决于它们的随机顺序.

它们在单独运行时成功,或者因为数据已经设置而失败.例如:

XCTAssert(observer.events[0].value.element == "", "Initail hub name is expected to be equal to be an empty string but was \(String(describing: observer.events[0].value.element))")
XCTAssert(observer.events[1].value.element == testHubName, "Initail hub name is expected to be equal to be the name we set but was \(String(describing: observer.events[1].value.element))")
Run Code Online (Sandbox Code Playgroud)

在此示例中,event[0]已设置为testHubName.或者它得到一个@throw RLMException(@"Object has been deleted or invalidated.");
所以我猜有一些种类的竞争,但这是在我的setup方法:

func setupRealm() {
    testRealm = try! Realm(configuration: Realm.Configuration(inMemoryIdentifier: "DORSessionViewModelTestsRealm"))
    try! self.testRealm.write {
        self.testRealm.deleteAll()
    }
}
Run Code Online (Sandbox Code Playgroud)

所以据我所知,每次测试都应该有一个新的Realm,那么比赛在哪里进行?

编辑:添加课程的更大部分

class DORSessionViewModelTests: XCTestCase {

var …
Run Code Online (Sandbox Code Playgroud)

realm ios swift

5
推荐指数
0
解决办法
2062
查看次数

在Xcode中与您的设备通信时出错

昨天我搜索了所有资源,但未获得成功的结果。请考虑到几天前我可以使用此设备进行测试。但是今天我没有这样做。我还用另一台Mac测试了该iphone,结果是相同。设备是Iphone 6s。我做了以下事情:-重新启动Xcode-重新启动mac-重新启动设备-清理并构建项目

请帮我解决这个问题。

1您可以从这里看到错误的图片

ios swift xcode8

5
推荐指数
2
解决办法
5831
查看次数

iCarousel未显示,方法未被处理

我试图通过两侧淡入淡出实现左侧iCarousel对象的权利.

所以我将GtiHub项目导入我的应用程序,为i​​Carousel分配了一个UIView ...将它链接到我的MainViewController上的IBOutLet并传递了Delegate以及DataSource,就像UITableViewController一样.

虽然它不会出现,我不确定可能导致这个问题的原因.

我的iCarousel DataSource是一个NSMutableArray*项目; 设计如下:

for (int i = 0; i < 100; i++)
{
    [_items addObject:@(i)];
}
Run Code Online (Sandbox Code Playgroud)

我正在ViewDidLoad中初始化iCarousel,如下所示

- (void)viewDidLoad
{
  [super viewDidLoad];
  //Initialize Carousel
  _carousel = [[iCarousel alloc] init];
  _carousel.delegate = self;
  _carousel.dataSource = self;

  //Carousel Testing Data
  for (int i = 0; i < 100; i++)
  {
     [_items addObject:@(i)];
  }

  //configure carousel
  _carousel.type = iCarouselTypeRotary;

}
Run Code Online (Sandbox Code Playgroud)

我的旋转木马代表方法如下:

#pragma mark -
#pragma mark iCarousel methods

- (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel
{
   //return the total number of items in …
Run Code Online (Sandbox Code Playgroud)

delegates objective-c uiview ios icarousel

4
推荐指数
1
解决办法
954
查看次数

打开网址并停留在应用程序中

我想在应用程序中打开任何 url 并像在 Skype 中那样留在应用程序中。它打开 safari 页面,左上角带有“完成”按钮,但您仍在 Skype 中。有人可以帮助我吗? 例子

objective-c ios

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