Xcode 14 UNUSABLE: New IBOutlet properties not recognized in Interface Builder
Is it just me - or Xcode 14 is simply unusable at this point? Because new IBOutlet properties are not recognized in Interface Builder.
(Outlets created in pre-14 Xcode versions do appear in Xcode 14 but with a warning sign with a tooltip claiming that outlet doesn't exist).
To reproduce, create a new outlet in the header file of the app delegate class (or any other class instantiated in Interface Builder):
@property (nonatomic, retain) IBOutlet NSButton *testButton;
then select this class in Interface Builder and open the Connections Inspector.
The testButton
outlet will NOT appear in the list of outlets.
This naturally makes Xcode 14 totally useless at this point.
Bug is submitted to Apple.
I wonder if there are users who do not experience this behavior?
Thanks,
Leo
On Oct 6, 2022, at 5:21 AM, Leo <leo.r@...> wrote:Is it just me - or Xcode 14 is simply unusable at this point? Because new IBOutlet properties are not recognized in Interface Builder.
(Outlets created in pre-14 Xcode versions do appear in Xcode 14 but with a warning sign with a tooltip claiming that outlet doesn't exist).To reproduce, create a new outlet in the header file of the app delegate class (or any other class instantiated in Interface Builder):@property (nonatomic, retain) IBOutlet NSButton *testButton;
then select this class in Interface Builder and open the Connections Inspector.ThetestButton
outlet will NOT appear in the list of outlets.This naturally makes Xcode 14 totally useless at this point.Bug is submitted to Apple.I wonder if there are users who do not experience this behavior?Thanks,
Leo
On Oct 6, 2022, at 2:21 AM, Leo <leo.r@...> wrote:I tried your steps to reproduce, and it didn't reproduce for me. I'm running macOS 12.6 on a Mac with an Intel CPU.
Is it just me - or Xcode 14 is simply unusable at this point? Because new IBOutlet properties are not recognized in Interface Builder.
By the way, I thought I read somewhere that the current recommended way of declaring an outlet is with @property (strong)?
I tried your steps to reproduce, and it didn't reproduce for me. I'm running macOS 12.6 on a Mac with an Intel CPU.I have to add a correction: the problem only happens on macOS Ventura (latest beta). There's no issue on macOS 12.6.
By the way, I thought I read somewhere that the current recommended way of declaring an outlet is with @property (strong)?
I was too confident that the system version wouldn't affect this - definitely was wrong.
As to
strong
then my code is non-ARC so it's the same as retain
as far as I understand.I noticed that too, and assumed *I* was doing something wrong or was not up to date on how IB works.I was able to make the connection in the opposite direction, by right-clicking the target and using the little circle. I have never liked that way of doing it but it worked.
I wonder if you do have the issue on a non-Ventura system?
Leo
On Oct 7, 2022, at 12:34 AM, Leo <leo.r@...> wrote:On Thu, Oct 6, 2022 at 08:01 AM, Andy Lee wrote:
I noticed that too, and assumed *I* was doing something wrong or was not up to date on how IB works.I was able to make the connection in the opposite direction, by right-clicking the target and using the little circle. I have never liked that way of doing it but it worked.As you probably saw in my follow-up post today, the problem actually only happens for me on Ventura. No issues on macOS 12.6.
I wonder if you do have the issue on a non-Ventura system?
Leo
On Oct 10, 2022, at 12:50 PM, Andy Lee via groups.io <aglee@...> wrote:
I saw it on Ventura too. I'm on the road and don't have a non-Ventura machine handy to confirm, but it sounds like a Ventura thing. It wouldn't be the first oddly-specific bug I've seen on Ventura.--AndyOn Oct 7, 2022, at 12:34 AM, Leo <leo.r@...> wrote:On Thu, Oct 6, 2022 at 08:01 AM, Andy Lee wrote:
I noticed that too, and assumed *I* was doing something wrong or was not up to date on how IB works.I was able to make the connection in the opposite direction, by right-clicking the target and using the little circle. I have never liked that way of doing it but it worked.As you probably saw in my follow-up post today, the problem actually only happens for me on Ventura. No issues on macOS 12.6.
I wonder if you do have the issue on a non-Ventura system?
Leo
I'm also downloading macOS 13.1 beta - will see if it makes any difference.
I wonder how Apple managed to screw this one up. It's not some kind of a minor obscure bug that's easy to miss. It's one of the main functions - and this bug totally breaks any development in Xcode on Ventura. (Well at least in Objective-C - I don't know if it affects Swift).
On Oct 27, 2022, at 10:40 PM, Leo <leo.r@...> wrote:The problem is NOT yet fixed in Xcode 14.1 RC2 on macOS 13.0.
I'm also downloading macOS 13.1 beta - will see if it makes any difference.
I wonder how Apple managed to screw this one up. It's not some kind of a minor obscure bug that's easy to miss. It's one of the main functions - and this bug totally breaks any development in Xcode on Ventura. (Well at least in Objective-C - I don't know if it affects Swift).
Well, you can't use any of these methods as well as any other methods.1) Right-click (or option-click) on the file’s owner object in the left Interface Builder pane, select the outlet and drag to the object you wish to connect.2) Select file’s owner object in the left pane, then select the outlet in IB’s Connection inspector and drag to the object you wish to connect.
The bug is that Interface Builder does not recognize any outlets at all. Outlets DO NOT APPEAR in Interface Builder at all - so there's nothing to connect.
And if you attempt to Ctrl-drag from the outlet entry in the code directly onto an object in IB (open in a split editor), IB doesn't let you connect the outlet to any object.
So the bug is that OUTLETS ARE DEAD, there's simply no way to use them on Ventura no matter what method you use.
I'm curious if your experience on Ventura is different?
Thanks,
Leo
On Oct 28, 2022, at 4:23 PM, Leo <leo.r@...> wrote:On Fri, Oct 28, 2022 at 01:50 PM, Jack Brindle wrote:Well, you can't use any of these methods as well as any other methods.1) Right-click (or option-click) on the file’s owner object in the left Interface Builder pane, select the outlet and drag to the object you wish to connect.2) Select file’s owner object in the left pane, then select the outlet in IB’s Connection inspector and drag to the object you wish to connect.
The bug is that Interface Builder does not recognize any outlets at all. Outlets DO NOT APPEAR in Interface Builder at all - so there's nothing to connect.
And if you attempt to Ctrl-drag from the outlet entry in the code directly onto an object in IB (open in a split editor), IB doesn't let you connect the outlet to any object.
So the bug is that OUTLETS ARE DEAD, there's simply no way to use them on Ventura no matter what method you use.
I'm curious if your experience on Ventura is different?
Thanks,
Leo
On 29 Oct 2022, at 12:25 am, Jack Brindle via groups.io <jackbrindle@...> wrote:Quite a bit different. IBOutlets are working just fine for me, and they show up as expected in Interface Builder. The _only_ thing not working is attempting to connect _from_ the object element _to_ the owning object. As I explained, going there other way works just fine.This has been true with all of the Xcode 14.1 betas & ICs in both Monterey and Ventura, including the current 13.1 beta.I also make extensive use of KVO from IB to object properties, which also works just fine.I would ask, what is different with your setup?JackOn Oct 28, 2022, at 4:23 PM, Leo <leo.r@...> wrote:On Fri, Oct 28, 2022 at 01:50 PM, Jack Brindle wrote:Well, you can't use any of these methods as well as any other methods.1) Right-click (or option-click) on the file’s owner object in the left Interface Builder pane, select the outlet and drag to the object you wish to connect.2) Select file’s owner object in the left pane, then select the outlet in IB’s Connection inspector and drag to the object you wish to connect.
The bug is that Interface Builder does not recognize any outlets at all. Outlets DO NOT APPEAR in Interface Builder at all - so there's nothing to connect.
And if you attempt to Ctrl-drag from the outlet entry in the code directly onto an object in IB (open in a split editor), IB doesn't let you connect the outlet to any object.
So the bug is that OUTLETS ARE DEAD, there's simply no way to use them on Ventura no matter what method you use.
I'm curious if your experience on Ventura is different?
Thanks,
Leo
OK, so I just upgraded to macOS 13 and Xcode 14 and for my project it works absolutely fine - in both directions.Clearing derived data doesn't make any difference.Have you tried clearing out the derived data directory?
On the same machine, there're no issues with Xcode 14 when booting in Monterey.
I also found out the following after testing Xcode 14 on Ventura:
-If I create a new project from scratch, the outlet properties I initially create are recognized by Interface Builder.
-However, after relaunching Xcode all outlets disappear in Interface Builder (exactly the same issue as in all existing projects).
I wonder what machine are you using?
Mine is MacBook Pro M1 Pro 16" 2021
On 30 Oct 2022, at 12:37 am, Leo <leo.r@...> wrote:I wonder if it's maybe an architecture thing. The computer I've updated is a 2019 Intel Core i7 MacBook Pro. Unfortunately I'm not in a position to update my M1 Mac yet as it's my primary development machine and I need to stay on macOS 12 for a while yet.
-If I create a new project from scratch, the outlet properties I initially create are recognized by Interface Builder.
-However, after relaunching Xcode all outlets disappear in Interface Builder (exactly the same issue as in all existing projects).
I wonder what machine are you using?
Mine is MacBook Pro M1 Pro 16" 2021
Mark
On Nov 1, 2022, at 4:54 PM, Leo <leo.r@...> wrote:
Ha. I installed Ventura on a different partition of the same MacBook Pro - and outlets work in Xcode 14 there with no issues.
It means to me that the bug is somewhere they’re hiding, waiting for the right conditions to happen. But, hopefully, it must be extremely rare.