小编Sar*_*ran的帖子

在重新分配之前,ARC是否将其引用类型实例属性设置为nil?

在阅读本文时,我遇到了这个问题.

我的问题是参考下图:

在此输入图像描述

一旦john设置为nil,Person实例就不再具有更强的引用,因此将被释放.但Apartment有两个强引用,其中一个是由Person实例上的属性很快就会被释放.我相信,这个强有力的参考在释放后仍然存在,并且代码无法实现.

因此,设置unit14Anil将仅删除对Apartment实例的一个强引用,并且不应该取消分配,因为由于上述情况会有一个更强的引用.

但是,正如文件所说,Apartment实例很快就被解除了分配.对我来说,这只有在Person实例解除分配时才会将其公寓属性设置为nil,通过删除Apartment实例上的强引用.但我找不到任何文件来验证这一点.

那么,Apartment实例如何解除分配?来自Person实例公寓属性的强引用发生了什么?

有人能帮助我理解这个吗?

iphone objective-c ios automatic-ref-counting swift

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

在@implementation内部和外部声明变量

我只是试图通过丢弃代码来理解变量的生命.我可以看到_inside和_outside在实例化新实例时保留,而大括号不是.

@interface ViewController (){
    NSString *_innBraces;
}

@end

NSString *_outside;

@implementation ViewController{
    NSString *_inmBraces;
}

NSString *_inside;

-(id)initWithInside:(NSString*)inside outside:(NSString*)outside nBraces:(NSString*)nBraces mBraces:(NSString*)mBraces{
    self = [super init];
    if (self) {
        _inside = inside;
        _outside = outside;
        _innBraces = nBraces;
        _inmBraces = mBraces;
        return self;
    }else{
        return nil;
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. _inside和_outside的声明地点之间有什么区别吗?
  2. 大括号变量与声明位置之间有什么区别?
  3. 声明与_inside/_outside变量相同的静态变量之间的任何区别?

objective-c

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

怎么'实施'?

我直接从这个 Apple页面中提取了这个例子

struct FixedLengthRange {
    var firstValue: Int
    let length: Int
}
Run Code Online (Sandbox Code Playgroud)

如果您将此结构的实例分配给常量,

let rangeOfFourItems = FixedLengthRange(firstValue: 0, length: 4)
Run Code Online (Sandbox Code Playgroud)

它说我们不能改变它的属性值,即使它被声明为'var'

这让我想知道如何let实施?我希望在编译时可以检测到它的任何赋值并显示编译错误.但在上述情况下,为什么它适用于结构的每个属性,无论它是如何定义的?

我试图搜索这个,发现用关键字'let'搜索非常困难,因为这是很常见的术语.

任何人都可以帮我理解这个吗?

structure constants ios swift

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

在 Flutter Mockito BlocTest 中找不到初始状态

我正在尝试做一个非常简单的 blocTest 来测试初始状态。但低于错误。有趣的是,我确实有另一个工作组并在同一个项目中进行测试。我逐行检查以查看是否有任何不匹配,但一切看起来都很完美,除了“行为”之外,我正在其他地方而不是这里做,假设与此初始状态测试无关。知道为什么这个集团会发生这种情况吗?

Expected: [ReadyToAuthenticateState:ReadyToAuthenticateState()]
  Actual: []
   Which: at location [0] is [] which shorter than expected
Run Code Online (Sandbox Code Playgroud)

我的集体测试

  late MockUserAuthenticationUseCase mockUsecase;
  late UserAuthenticationBloc authBloc;
  setUp(() {
    mockUsecase = MockUserAuthenticationUseCase();
    authBloc = UserAuthenticationBloc(usecase: mockUsecase);
  });

blocTest<UserAuthenticationBloc, UserAuthenticationState>(
    'emits [MyState] when MyEvent is added.',
    build: () => authBloc,
    expect: () => <UserAuthenticationState>[ReadyToAuthenticateState()],
  );
Run Code Online (Sandbox Code Playgroud)

我的集团

class UserAuthenticationBloc
    extends Bloc<UserAuthenticationEvent, UserAuthenticationState> {
  final UserAuthenticationUseCase usecase;

  UserAuthenticationBloc({required this.usecase})
      : super(ReadyToAuthenticateState()) {
    on<UserAuthenticationEvent>((event, emit) {
      if (event is AuthenticateUserWithCredentialsEvent) {
        _processReadyToAuthenticateEvent(event);
      }
    });
  }

  void _processReadyToAuthenticateEvent( …
Run Code Online (Sandbox Code Playgroud)

unit-testing mockito dart flutter bloc

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